2
原生支持爲了獲得索引在Android Studio編輯器,我應該在的build.gradle中添加以下代碼:的Android NDK工作室:編譯與NDK構建和獲取與搖籃實驗
ndk {
moduleName "MyModule"
CFlags.add("-I${file("src/main/jni/headers1")}".toString())
CFlags.add("-I${file("src/main/jni/headers2")}".toString())
}
但隨後gradle這個忽略我的Android.mk,如果我將從build.gradle中刪除這段代碼,那麼我將無法在編輯器中正確編制索引,因爲所有頭文件都在這兩個文件夾中。 是否有人知道如何使我的Android.mk編譯gradle,並仍然可以進行本機編輯和調試?
即時通訊使用: 的Android 2.1演播室穩定 gradle這個實驗性:0.7.0 我build.grade:
apply plugin: "com.android.model.application"
def ndkDir = System.getenv("ANDROID_NDK_HOME")
def propertiesFile = project.rootProject.file('local.properties')
if (propertiesFile.exists()) {
Properties properties = new Properties()
properties.load(propertiesFile.newDataInputStream())
ndkDir = properties.getProperty('ndk.dir')
}
model {
android.sources {
main {
jni {
source {
srcDirs.removeAll()
srcDir 'src/main/none'
}
}
jniLibs {
source {
srcDir 'src/main/libs'
}
}
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
ndk {
moduleName "MyModule"
CFlags.add("-I${file("src/main/jni/headers1")}".toString())
CFlags.add("-I${file("src/main/jni/headers2")}".toString())
}
defaultConfig {
applicationId "com.myapp.android.me"
minSdkVersion.apiLevel 19
targetSdkVersion.apiLevel 23
}
buildTypes {
debug {
ndk {
debuggable = true
}
}
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile 'com.google.code.gson:gson:2.2.4'
}
task buildNative(type: Exec, description: 'Compile JNI source via NDK'){
commandLine "${ndkDir}/ndk-build",'NDK_DEBUG=1','NDK_PROJECT_PATH ='+ getProjectDir() + '/src/main'
}
tasks.withType(AbstractCompile) {
compileTask -> compileTask.dependsOn buildNative
}
檢查http://stackoverflow.com/a/32640823/192373 - 如果你有更多的speci fic的問題,我會回答,當我拿到一個電腦鍵盤 –
嗨亞歷克斯,感謝您的評論,我試圖獲得本地調試能力在AS和使用本機編輯,但不能讓他們兩個,我必須使用我的Android.mk,因爲我有彙編文件進行編譯。如果我在build.gradle中編寫「moduleName MyModule」,那麼本地編輯工作,但gradle忽略我的Android.mk文件,如果我從build.gradle中刪除「moduleName MyModule」,按照我的Android.mk編寫的gradle編譯並且本地調試正在工作但不是本地編輯,因爲AS不知道在哪裏尋找符號(headers1和header2) – VitalyD
你試過鏈接的答案嗎?它正是如此,允許本地調試和編輯。如果task.name.startsWith('compile')&& task.name.contains('MainC')'必須禁用任務。我也使用'task.name.endsWith(「SharedLibrary」)'作爲標準來設置'dependsOn buildNative' –