在 Android Studio 中,什么相当于 ndk-build 下的 CMAKE_VERBOSE_MAKEFILE?
In Android Studio what is the equivalent of CMAKE_VERBOSE_MAKEFILE under ndk-build?
我正在尝试将一些现有的基于 Android.mk 的本机代码推送到新的 Android Studio 应用程序中。有一些链接错误给出消息 "Error:error: linker command failed with exit code 1 (use -v to see invocation)"。使用 CMake 时,可以设置变量 CMAKE_VERBOSE_MAKEFILE 以使其成为默认行为。有没有办法在ndk-build下做类似的事情?在 Android Studio 上下文中尝试使用 -v 或 V=1(不确定哪个最好)从命令行 运行 ndk-build 看起来很尴尬。
编辑:
如以下回复所述,这应该可以从 Gradle 使用 "arguments" 关键字。我对此的解释是这个版本的模块:app build.gradle file:
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) Could not find method ndkBuild() for arguments [build_95llvy1tc979yxena3spokoe8$_run_closure1$_closure3@34646897] on root project 'TestProj4' of type org.gradle.api.Project."
我也尝试了一些变体,所有这些都产生了基本相同的错误。 "arguments" 关键字在 build.gradle 文件中的正确位置是什么?
ndkBuild { arguments "V=1" }
在您的 build.gradle 中,然后 运行 gradle 和 --info
(设置->构建、执行、部署->编译器-> Command-line 选项)。
对于命令行 ndk-build 用法,运行 ndk-build V=1
。
https://developer.android.com/studio/projects/add-native-code.html#link-gradle
从 DSL reference 看来,您需要将 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
属性 是一个 NdkBuildOptions
object, which only has a path
property. The ndkBuild
blocks for flavors and build types are ExternalNativeNdkBuildOptions
对象,它有arguments
等
我正在尝试将一些现有的基于 Android.mk 的本机代码推送到新的 Android Studio 应用程序中。有一些链接错误给出消息 "Error:error: linker command failed with exit code 1 (use -v to see invocation)"。使用 CMake 时,可以设置变量 CMAKE_VERBOSE_MAKEFILE 以使其成为默认行为。有没有办法在ndk-build下做类似的事情?在 Android Studio 上下文中尝试使用 -v 或 V=1(不确定哪个最好)从命令行 运行 ndk-build 看起来很尴尬。
编辑:
如以下回复所述,这应该可以从 Gradle 使用 "arguments" 关键字。我对此的解释是这个版本的模块:app build.gradle file:
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) Could not find method ndkBuild() for arguments [build_95llvy1tc979yxena3spokoe8$_run_closure1$_closure3@34646897] on root project 'TestProj4' of type org.gradle.api.Project."
我也尝试了一些变体,所有这些都产生了基本相同的错误。 "arguments" 关键字在 build.gradle 文件中的正确位置是什么?
ndkBuild { arguments "V=1" }
在您的 build.gradle 中,然后 运行 gradle 和 --info
(设置->构建、执行、部署->编译器-> Command-line 选项)。
对于命令行 ndk-build 用法,运行 ndk-build V=1
。
https://developer.android.com/studio/projects/add-native-code.html#link-gradle
从 DSL reference 看来,您需要将 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
属性 是一个 NdkBuildOptions
object, which only has a path
property. The ndkBuild
blocks for flavors and build types are ExternalNativeNdkBuildOptions
对象,它有arguments
等