Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 Gradle似乎在添加产品风格时过度编写了ndk构建参数_Android_Gradle_Android Ndk_Android Gradle Plugin - Fatal编程技术网

Android Gradle似乎在添加产品风格时过度编写了ndk构建参数

Android Gradle似乎在添加产品风格时过度编写了ndk构建参数,android,gradle,android-ndk,android-gradle-plugin,Android,Gradle,Android Ndk,Android Gradle Plugin,我有一个android项目,其中build.gradle如下所示: android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId "com.example.test" minSdkVersion 24 targetSdkVersion 25 versionCode 1 versionName "1.0" ndk { //

我有一个android项目,其中build.gradle如下所示:

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.test"
    minSdkVersion 24
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    ndk {
        // Specifies the ABI configurations of your native
        // libraries Gradle should build and package with your APK.
        abiFilters 'armeabi-v7a'
    }
    externalNativeBuild {
        ndkBuild {
            targets "test_app"
        }
    }
}

buildTypes {
    release {
        minifyEnabled false
        useProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

productFlavors {
    general {
        externalNativeBuild {
            ndkBuild {
                arguments "LOCAL_CFLAGS+=-std=c++11"
                arguments "LOCAL_CFLAGS+=-DMODE_GENERAL"
            }
        }
    }

    full {
        externalNativeBuild {
            ndkBuild {
                arguments "LOCAL_CFLAGS+=-std=c++11"
                arguments "LOCAL_CFLAGS+=-DMODE_FULL"
            }
        }
    }
}

externalNativeBuild {
    ndkBuild {
        path 'src/main/cpp/Android.mk'
    }
}
}


我在
路径'src/main/cpp/Android.mk'
中的Android.mk已经包含
LOCAL\u CFLAGS+=-std=c++11
,如果我没有任何产品风格,它构建得很好。但是,如果我确实有产品风格,那么我必须包含
参数“LOCAL\u CFLAGS+=-std=c++11”
来构建它。我想知道是否有任何方法可以避免这种情况,因为我觉得我应该只需要包括在
Android.mk
中没有提到的额外参数。问题行为的根本原因不是渐变,而是在make的命令行上设置
LOCAL\u CFLAGS
(make变量)。gnu make的规则在ndk build的框架下运行,它声明这个“锁定”变量,在makefile中设置的任何内容都无效。Make引入了一个特殊的,但不能在ndk构建中用于
本地\u CFLAGS

您不应该从本地模块外部覆盖
本地\u CFLAGS
;您应该在Application.mk中使用
APP\u CFLAGS
,或者作为ndk build命令行参数使用

< > >设置<代码>(无论什么),不允许使用cFLAGS=-STD= C++ 11 < /COD>,因为这些标志将被传递给C++和C编译器。此设置属于
LOCAL\u CPPFLAGS
及其亲属

使用gradle插件,您可以使用cFlagscppFlags,如-优于通用参数所示,例如:


gradle插件确实覆盖了NDK构建的许多设置,这就是为什么引入了cFlags、abiFilter和最后的参数。感谢您的解释。我试试这个。
productFlavors {
  full { 
    externalNativeBuild {
      ndkBuild {
        cFlags "-DMODE_FULL"
        cppFlags "-fexceptions"
      }
    }
  }
}