使用本机代码构建 Android 库时出现问题

Problems building Android Library with native code

我正在尝试使用本机代码构建一个 Android 库项目。根据 http://tools.android.com/tech-docs/new-build-system/gradle-experimental 下的 "Known limitations" 部分,支持混合库项目。但是在库aar文件的libs文件夹下好像没有看到生成原生的so文件。

这是我的项目设置的样子

  1. 已按照 http://tools.android.com/tech-docs/new-build-system/gradle-experimental 中的步骤获得 ndk 支持
  2. 添加了一个库模块,静态加载原生 so 文件并通过一些方法公开功能
  3. 添加了另一个使用本机模块的模块。设置模块依赖项以包含库项目。

当我 运行 这个应用程序时,我得到了一个 UnsatisfiedLinkError,这是我所期望的,因为我没有看到在 aar 文件中生成本机 so 文件。

这是我的库 build.gradle 文件的样子

apply plugin: 'com.android.model.library'

model {
     android {
         compileSdkVersion = 23
         buildToolsVersion = "23.0.1"
     }
     android.ndk {
         moduleName = "native"
         cppFlags = ['-std=c++11']
         stl = "gnustl_shared"
     }
}

这是我的应用程序模块 build.gradle 的样子

apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.1"
    }
}
dependencies {
    compile project(':mylibrary')
}

这是 gradle 实验性 0.2.0 和 0.2.1 中的常见问题。有同样的问题,升级到 0.3.0-alpha4 并且它有效(只需在项目的 build.gradle 中将 0.2.0 替换为 0.3.0-alpha4 )。要升级,您需要 Gradle 2.6(右键单击 module/Open 模块设置/ select 项目 子菜单/设置 Gradle version 字段到 2.6)。请注意,我使用的是 Android Studio 1.4 RC3。