tha*_*hnd 10 android build.gradle android-gradle-plugin
我想创建一个类似于applicationId的全局变量.它是build.gradle中的设置值,将在清单中使用.可能吗?
Mar*_*rko 19
您可以设置它们,例如我将其设置为不同的产品口味
productFlavors {
production {
applicationId = "com.myapp.app"
resValue "string", "authority", "com.facebook.app.FacebookContentProvider5435651423234"
}
development {
applicationId = "com.myapp.development"
resValue "string", "authority", "com.facebook.app.FacebookContentProvider2134564533421"
}
qa {
applicationId = "com.myapp.qa"
resValue "string", "authority", "com.facebook.app.FacebookContentProvider29831237981287319"
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="@string/authority"
android:exported="true" />
Run Code Online (Sandbox Code Playgroud)
Tim*_*tin 14
如果您只想在清单中使用gradle中设置的应用程序ID,则只需使用:
$ {}的applicationID
例如:
<provider
android:authorities="${applicationId}.ShareFileProvider" ... >
...
</provider>
Run Code Online (Sandbox Code Playgroud)
如果您希望自定义变量具有相同的行为,则可以使用manifestPlaceholders,如下所示:
android {
defaultConfig {
manifestPlaceholders = [hostName:"www.example.com"]
}
}
Run Code Online (Sandbox Code Playgroud)
在你的清单中:
<intent-filter ... >
<data android:scheme="http" android:host="${hostName}" ... />
...
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅https://developer.android.com/studio/build/manifest-build-variables.html.
Pin*_*Pin 12
虽然Marko的答案似乎有效,但目前有一个更好的解决方案,不需要在字符串资源文件中添加变量.
对于自定义占位符替换,请使用以下DSL配置占位符值:
android {
defaultConfig {
manifestPlaceholders = [ activityLabel:"defaultName"]
}
productFlavors {
free {
}
pro {
manifestPlaceholders = [ activityLabel:"proName" ]
}
}
Run Code Online (Sandbox Code Playgroud)
将在以下声明中替换占位符:
<activity android:name=".MainActivity" android:label="${activityLabel}" >
Run Code Online (Sandbox Code Playgroud)
您还可以使用groovy函数操作这些字符串.
| 归档时间: |
|
| 查看次数: |
6093 次 |
| 最近记录: |