我正在尝试将一些现有的基于Android.mk的本机代码推送到新的Android Studio应用中。有一些链接错误给出消息“错误:错误:链接器命令失败,退出代码为1(使用-v查看调用)”。使用CMake时,可以设置变量CMAKE_VERBOSE_MAKEFILE以使其成为默认行为。有没有办法在ndk-build下做类似的事情?尝试在命令行中使用-v或V = 1(不确定哪个最好)在Android Studio上下文中运行ndk-build似乎很尴尬。
编辑:
如下面的回答所述,这应该可以使用“arguments”关键字从Gradle中获得。我对此的解释是这个版本的模块:app build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.adth.jwc.testproj4"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
ndkBuild {
path "$projectDir/jni/Android.mk"
arguments "V=1"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}
这会在类型为org.gradle.api.Project的根项目'TestProj4'上生成错误消息“错误:(16,0)找不到方法ndkBuild()的参数[build_95llvy1tc979yxena3spokoe8 $ _run_closure1 $ _closure3 @ 34646897]。 “
我也尝试了一些变体,所有这些变体都会产生基本相同的错误。 build.gradle文件中“arguments”关键字的正确位置是什么?
答案 0 :(得分:2)
从DSL reference开始,您需要将exernalNativeBuild
块放在产品flavor或构建类型块中以添加参数,所以
defaultConfig {
applicationId "com.adth.jwc.testproj4"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
ndkBuild {
arguments "V=1"
}
}
}
应该有效。令人困惑的是,BaseExtension
(android
块)也可以有externalNativeBuild
块,但其ndkBuild
属性是NdkBuildOptions
对象,只有{ExternalNativeNdkBuildOptions
对象1}}属性。风味和构建类型的path
块是http://www.timrodman.com/importing-new-customers-email-address-acumatica/个对象,具有ndkBuild
等。
答案 1 :(得分:0)
ndkBuild { arguments "V=1" }
,然后使用--info
(设置 - >构建,执行,部署 - >编译器 - >命令行选项)运行gradle。
对于命令行ndk-build用法,请运行ndk-build V=1
。
https://developer.android.com/studio/projects/add-native-code.html#link-gradle