在Android Studio中,ndk构建下的CMAKE_VERBOSE_MAKEFILE的等价物是什么?
我正在尝试将一些现有的基于Android.mk的本机代码推送到一个新的Android Studio应用程序中。存在一些链接错误,导致消息“Error:Error:linker命令失败,退出代码为1(使用-v查看调用)”。使用CMake时,可以设置变量CMake_VERBOSE_MAKEFILE,使其成为默认行为。在ndk构建中有没有类似的方法?在androidstudio上下文中,尝试从命令行以-v或v=1(不确定哪一个是最好的)运行ndk build似乎很尴尬 编辑: 正如下面的回复中所指出的,这应该可以通过Gradle使用“arguments”关键字来实现。我对此的解释是模块的以下版本:app build.gradle文件:在Android Studio中,ndk构建下的CMAKE_VERBOSE_MAKEFILE的等价物是什么?,android,android-studio,android-ndk,ndk-build,Android,Android Studio,Android Ndk,Ndk Build,我正在尝试将一些现有的基于Android.mk的本机代码推送到一个新的Android Studio应用程序中。存在一些链接错误,导致消息“Error:Error:linker命令失败,退出代码为1(使用-v查看调用)”。使用CMake时,可以设置变量CMake_VERBOSE_MAKEFILE,使其成为默认行为。在ndk构建中有没有类似的方法?在androidstudio上下文中,尝试从命令行以-v或v=1(不确定哪一个是最好的)运行ndk build似乎很尴尬 编辑: 正如下面的回复中所指出的
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'
}
这将生成错误消息“error:(16,0)找不到参数[build95llvy1tc979yxena3spokoe8$\u run\u closure1]的方法ndkBuild()$_closure3@34646897]在org.gradle.api.project类型的根项目“TestProj4”上。“
我还尝试了一些变体,所有这些变体都会产生基本相同的错误。“arguments”关键字在build.gradle文件中的正确位置是什么?
ndkBuild{arguments“V=1”}
在build.gradle中,然后使用--info
运行gradle(设置->构建、执行、部署->编译器->命令行选项)
对于命令行ndk构建用法,请运行ndk build V=1
从中,似乎需要将exernalNativeBuild
块放在产品风格或构建类型块中以添加参数,因此
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
属性是一个对象,它只有一个path
属性。口味和构建类型的ndkBuild
块是对象,具有参数
等。我对此的解释似乎不起作用。请看上面编辑的问题。更新了我的答案。我相信您需要使用--info运行gradle,以便它停止抑制ndk build正在打印的信息。-info实际上会导致gradle转储大量信息,但它不会处理上面提到的参数错误。