Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 如何在build.gradle中使用最终解析的applicationId_Android_Gradle_Android Gradle Plugin_Android Resources_Android Flavors - Fatal编程技术网

Android 如何在build.gradle中使用最终解析的applicationId

Android 如何在build.gradle中使用最终解析的applicationId,android,gradle,android-gradle-plugin,android-resources,android-flavors,Android,Gradle,Android Gradle Plugin,Android Resources,Android Flavors,假设我有下面的版本 android{ defaultConfig{ applicationId "com.example.base" } buildTypes{ release{ minifyEnabled true } debug{ applicationIdSuffix ".dev" minifyEnabled false

假设我有下面的版本

android{
    defaultConfig{
        applicationId "com.example.base"
    }
    buildTypes{
        release{
            minifyEnabled true
        }
        debug{
            applicationIdSuffix ".dev"
            minifyEnabled false
        }
    }
    productFlavors{
        free{
            applicationId "com.example.free"
        }
        paid{
            applicationId "com.example.paid"
        }
    }
}
我想将生成的应用程序id添加到strings.xml,如下所示:

resValue "string", "app_package", applicationId
因此,我可以在preferences xml中定义的intents
targetPackage
中使用该值

但值的变化取决于我将该行放入的块:

  • defaultConfig->“com.example.base”(始终是基Id,无用)
  • productFlavours.free->“com.example.free”(问题是,对于调试版本,不会更改为“com.example.free.dev”)
  • productFlavours->错误,不生成
  • buildTypes.debug->错误,不生成
通过使用applicationIdSuffix,我需要gradle解析最终id,然后才能使用它。如何做到这一点?

在DSL中添加以下内容:

freeDebug
build中,这将添加到
app/intermediates/res/merged/free/debug/values/values.xml中:

<string name="app_package" translatable="false">com.example.free.dev</string>
<string name="app_package" translatable="false">com.example.free.dev</string>
<string name="app_package" translatable="false">com.example.paid.dev</string>