我正在尝试为我的NDK项目使用实验性Gradle插件,但它不编译ndk。一切看起来都很好--Android Studio理解我的C代码,可以从Java跳到本地等等,但是当我运行“Build”时,编译ndk的步骤被跳过 - 我看不到像“compileNdk”这样的任务。
当我通过使用gradle实验性插件编译NDK
gradlew tasks
列出所有可用的任务有像“compileNdk”还没有TAKS。 “Libs”文件夹也是空的,所以当我尝试调用本地方法时,应用程序崩溃与“UnsatisfiedLinkError”。
那么我错过了什么?如何分辨gradle编译NDK?
我的配置是:
根的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'
}
我使用的Android 1.4.1工作室在Windows 7上ndk.dir指向由AS下载的“ndk-bundle”文件夹。
任何帮助表示赞赏!
这些任务现在被称为'compileArmeabiDebugtest_experimentalSharedLibrarytest_experimentalMainCpp'和'linkArmeabiDebugtest_experimentalSharedLibrary'等。我正在使用** 0.2.0 ** –
您的模块的Gradle构建文件为我查找文件。但是,尝试删除'android.sources {}'部分,然后清理并重建您的项目。让我们知道发生了什么。 – shailenTJ
谢谢,我找到原因,看到我的回答在 – noktigula