在 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"
        }
    }
}

应该可以。令人困惑的是,BaseExtensionandroid 块)也可以有一个 externalNativeBuild 块,但它的 ndkBuild 属性 是一个 NdkBuildOptions object, which only has a path property. The ndkBuild blocks for flavors and build types are ExternalNativeNdkBuildOptions 对象,它有arguments