Android Gradle获取当前生成类型

Android Gradle获取当前生成类型,android,intellij-idea,gradle,android-studio,Android,Intellij Idea,Gradle,Android Studio,全部 我试图让Gradle为发布版和调试版生成不同的文件(Android.mk和Application.mk)。默认情况下,GradleAndroid插件这样做不适合我,因为它不允许修改Application.mk,我想。主要问题是我无法识别当前的构建类型。 我尝试了以下方法: android { ... defaultConfig { project['CONFIGURATION_FLAGS'] = '' project['APP_ABI']

全部

我试图让Gradle为发布版和调试版生成不同的文件(Android.mk和Application.mk)。默认情况下,GradleAndroid插件这样做不适合我,因为它不允许修改Application.mk,我想。主要问题是我无法识别当前的构建类型。 我尝试了以下方法:

android {
    ...
    defaultConfig {
        project['CONFIGURATION_FLAGS'] = ''

        project['APP_ABI'] = ''
        project['APP_PLATFORM'] = 'android-9'
        project['APP_STL'] = 'gnustl_static'
        project['NDK_TOOLCHAIN_VERSION'] = 'clang'
    }
    buildTypes {
        release {
            project['CONFIGURATION_FLAGS'] = '-fvisibility=hidden'
            project['APP_ABI'] = 'armeabi x86'
        }
        debug {
            project['CONFIGURATION_FLAGS'] = '-g -DDEBUG -DENABLE_LOG'
            project['APP_ABI'] = 'armeabi'
        }
    }
}
task processTemplates {
    def templatesDir = System.getProperty('user.dir') + '/app/templates'
    def jniDir = System.getProperty('user.dir') + '/app/src/main/jni'

    // Android.mk
    def configFlags = project['CONFIGURATION_FLAGS']

    def androidMk = file(templatesDir + '/Android.mk').text
    androidMk = androidMk.replaceAll '<CONFIGURATION_FLAGS>', configFlags
    def newAndroidMk = new File(jniDir + '/Android.mk')
    newAndroidMk.text = androidMk

    // Application.mk
    def appAbi = project['APP_ABI']
    def appPlatform = project['APP_PLATFORM']
    def appStl = project['APP_STL']
    def toolchain = project['NDK_TOOLCHAIN_VERSION']

    def applicationMk = file(templatesDir + '/Application.mk').text
    applicationMk = applicationMk.replaceAll '<APP_ABI>', appAbi
    applicationMk = applicationMk.replaceAll '<APP_PLATFORM>', appPlatform
    applicationMk = applicationMk.replaceAll '<APP_STL>', appStl
    applicationMk = applicationMk.replaceAll '<NDK_TOOLCHAIN_VERSION>', toolchain
    def newApplicationMk = new File(jniDir + '/Application.mk')
    newApplicationMk.text = applicationMk
}
android{
...
默认配置{
项目['CONFIGURATION_FLAGS']=''
项目['APP_ABI']='
项目['APP_PLATFORM']='android-9'
项目['APP_STL']='gnustl_static'
项目['NDK_工具链_版本']='clang'
}
建筑类型{
释放{
项目['CONFIGURATION_FLAGS']='-fvisibility=hidden'
项目['APP_ABI']='armeabi x86'
}
调试{
项目['CONFIGURATION_FLAGS']='-g-DDEBUG-DENABLE_LOG'
项目['APP_ABI']='armeabi'
}
}
}
任务处理模板{
def templatesDir=System.getProperty('user.dir')+'/app/templates'
def jniDir=System.getProperty('user.dir')+'/app/src/main/jni'
//Android.mk
def configFlags=project['CONFIGURATION_FLAGS']
def androidMk=file(templatesDir+'/Android.mk').text
androidMk=androidMk.replaceAll“”,配置标志
def newAndroidMk=新文件(jniDir+'/Android.mk')
newAndroidMk.text=androidMk
//Application.mk
def appAbi=project['APP_ABI']
def appPlatform=project['APP_PLATFORM']
def appStl=项目['APP_STL']
def toolchain=项目['NDK_toolchain_版本']
def applicationMk=file(templatesDir+'/Application.mk').text
applicationMk=applicationMk.replaceAll“”,appAbi
applicationMk=applicationMk.replaceAll“”,appPlatform
applicationMk=applicationMk.replaceAll“”,appStl
applicationMk=applicationMk.replaceAll“”,工具链
def newApplicationMk=新文件(jniDir+'/Application.mk')
newApplicationMk.text=applicationMk
}

但发现参数设置执行了2次,即,对于每种类型的生成,无论当前生成类型如何。这导致了这样一个事实:对于任何类型的构建,它都会设置调试选项。有人能告诉我如何解决这个问题吗?

添加一个任务,该任务取决于调用后的每个Assemblexx任务和属性设置

有关类似问题,请参阅我的

我在这里回答的可能重复:(最简单的解决方案)