我正在尝试为我的 NDK 项目使用 Experimental Gradle Plugin,但它不编译 ndk。一切看起来都很好——Android Studio 理解我的 C 代码,可以从 Java 跳转到本机等等,但是当我运行“构建”时,跳过了编译 ndk 的步骤——我看不到像“compileNdk”这样的任务。
当我列出所有可用任务时
gradlew tasks
也没有像“compileNdk”这样的任务。“Libs”文件夹也是空的,所以当我尝试调用本机方法时,应用程序崩溃并显示“UnsatisfiedLinkError”。
那我错过了什么?如何告诉 gradle 编译 NDK?
我的配置是:
root build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
模块 build.gradle:
apply plugin: 'com.android.model.application'
model
{
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.kaspersky.experimentalcpp"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
}
android.buildTypes {
debug {
ndk.with {
debuggable = true
}
}
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
android.sources {
main {
jni {
source {
srcDirs 'src/main/jni'
}
}
}
}
android.ndk {
moduleName = "test_experimental"
stl = "stlport_static"
cppFlags += "-Isrc/main/jni".toString()
ldLibs += ["log"]
ldLibs += ["android"]
}
android.productFlavors {
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("fat")
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.0'
}
我在 Windows 7 上使用 Android Studio 1.4.1。ndk.dir 指向由 AS 下载的“ndk-bundle”文件夹。
任何帮助表示赞赏!