androidstudio 引用外部工程

本文介绍如何在Gradle项目中配置外部模块及资源文件夹的路径,包括将外部module添加到settings.gradle,并详细展示了如何指定不同类型的源代码目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引用外部module在 settings.gradle中添加
project(':
outer
').projectDir = new File(settingsDir, '../../outer')
include 中追加':outer'
2.引用外部文件
在build.gradle中添加

sourceSets { main
            {

                 java.srcDirs = ['W:\\packages\\apps\\Launcher\\src']
                 res.srcDirs = ['W:\\packages\\apps\\Launcher\\res', 
		'W:\\AutoUI\\packages\\apps\\Launcher\\res\\anim']
                jniLibs.srcDirs = ['libs']
                aidl.srcDirs = ['src\\main\\java','src\\main\\aidl']
                  assets.srcDirs = ['W:\\packages\\apps\\Launcher\\assets']

            }
    }
### 集成和调用SO库 #### 创建新项目并准备环境 当在 Android Studio 中新建一个 Android 项目时,为了能够集成和调用 `.so` 文件,需要先确保项目的构建工具支持 C/C++ 编码。这可以通过勾选“Include C++ support”选项来实现,在创建项目向导中提供该选项。 #### 使用CMake配置项目 对于采用 CMake 来管理原生代码的情况: - **修改 `build.gradle` 文件** 在应用级别的 `build.gradle` 文件内加入对外部原生构建系统的声明部分。具体而言是在 android 块下的 externalNativeBuild 节点里指明使用的构建方式为 cmake 并设置路径指向 `CMakeLists.txt` 文件的位置[^3]。 ```gradle android { ... defaultConfig { ... externalNativeBuild { cmake { cppFlags "-frtti -fexceptions" } } } ... externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } } } ``` - **编写 `CMakeLists.txt`** 接下来要编辑或新增名为 `CMakeLists.txt` 的文件于工程合适位置(通常放置在 src/main/cpp/ 下面),定义好待编译的目标以及链接规则等信息。例如指定源文件列表、包含头文件目录、连接第三方预编译好的 .a/.so 库等等操作均在此完成[^1]。 ```cmake cmake_minimum_required(VERSION 3.4.1) add_library( native-lib SHARED src/main/cpp/native-lib.cpp ) find_library(log-lib log ) target_link_libraries(native-lib ${log-lib}) ``` #### 使用ndk-build配置项目 而若是选用 ndk-build 方案,则需遵循如下流程: - 同样地调整 `build.gradle` ,不过这次是指定 ndkBuild.path 属性对应至 Android.mk 文件所在之处[^2]。 ```gradle android { ... defaultConfig { ... externalNativeBuild { ndkBuild { arguments "APP_PLATFORM=android-21", "APP_ABI=all" cFlags "-Wall -Wextra" cppFlags "" } } } externalNativeBuild { ndkBuild { path "src/main/jni/Android.mk" } } } ``` - 准备 `Android.mk` 及可能存在的 `Application.mk` 这两个 Makefile 类型的文本档用来描述整个 NDK 构建过程所需的信息,比如哪些模块会被打包进最终产物之中;各个组件之间的依赖关系又是怎样的等问题都得在这儿给出明确指示。 ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) ``` 一旦完成了上述准备工作之后,就可以通过 Java/Kotlin 代码加载共享对象(.so),并通过 JNI (Java Native Interface) 实现跨语言交互逻辑了。此时只需简单地利用 System.loadLibrary 方法即可引入所需的动态链接库实例[^4]。 ```java static{ System.loadLibrary("native-lib"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值