Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android Studio中,ndk构建下的CMAKE_VERBOSE_MAKEFILE的等价物是什么?_Android_Android Studio_Android Ndk_Ndk Build - Fatal编程技术网

在Android Studio中,ndk构建下的CMAKE_VERBOSE_MAKEFILE的等价物是什么?

在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似乎很尴尬 编辑: 正如下面的回复中所指出的

我正在尝试将一些现有的基于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文件:

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转储大量信息,但它不会处理上面提到的参数错误。