And*_*ins 122 android android-gradle-plugin
我试图找出一种方法,可以在gradle中更改每个构建类型的应用程序的应用程序名称.
例如,我想调试版本<APP_NAME>-debug和qa版本<APP-NAME>-QA.
我熟悉:
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法在启动器中找到应用更改应用程序的gradle命令.
Com*_*are 151
如果"应用程序名",你的意思android:label上<application>,最简单的解决办法是有一个点在一个字符串资源(例如,android:label="@string/app_name"),然后在有不同的版本字符串资源的src/debug/sourceset.
您可以在此示例项目中看到,我将替换app_namein src/debug/res/values/strings.xml,将其应用于debug构建.releasebuild将使用app_namein 的版本src/main/.
小智 140
你可以使用这样的东西
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
resValue "string", "app_name", "AppName debug"
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
zipAlignEnabled true
resValue "string", "app_name", "AppName"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在AndroidManifest.xml文件中使用@ string/app_name.
确保从values /文件夹中删除app_name(此名称没有条目).
Alb*_*lvo 51
你可以用gradle做到这一点:
android {
buildTypes {
release {
manifestPlaceholders = [appName: "My Standard App Name"]
}
debug {
manifestPlaceholders = [appName: "Debug"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的AndroidManifest.xml投入:
<application
android:label="${appName}"/>
<activity
android:label="${appName}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
注意:它也可以使用productFlavors.
Nic*_*hek 35
为了支持翻译,请:
1.删除字符串"app_name"
2. 加入gradle
buildTypes {
admin {
resValue "string", "app_name", "@string/app_name_admin"
}
release {
resValue "string", "app_name", "@string/app_name_release"
}
debug {
resValue "string", "app_name", "@string/app_name_debug"
}
}
Run Code Online (Sandbox Code Playgroud)
3.在Manifest中将应用程序名称设置为"@ string/app_name"
4.添加到strings.xml值
<string name="app_name_admin">App Admin</string>
<string name="app_name_release">App release</string>
<string name="app_name_debug">App debug</string>
Run Code Online (Sandbox Code Playgroud)
Kry*_*lez 14
应用名称是用户可见的,这就是Google鼓励您将其保留在strings.xml文件中的原因.您可以定义一个单独的字符串资源文件,其中包含特定于buildTypes的字符串.听起来你可能有自定义的qabuildType.如果不是这样,请忽略下面的qa部分.
??? src
??? debug
? ??? res
? ??? buildtype_strings.xml
??? release
? ??? res
? ??? buildtype_strings.xml
??? qa
??? res
??? buildtype_strings.xml
Run Code Online (Sandbox Code Playgroud)
Hun*_*NM2 12
我们需要一个解决方案来支持具有本地化的应用名称(适用于多语言).我已经使用@Nick Unuchek解决方案进行了测试,但构建失败(未找到@ string /).稍微修改一下这个bug:build.gradle文件:
android {
ext{
APP_NAME = "@string/app_name_default"
APP_NAME_DEV = "@string/app_name_dev"
}
productFlavors{
prod{
manifestPlaceholders = [ applicationLabel: APP_NAME]
}
dev{
manifestPlaceholders = [ applicationLabel: APP_NAME_DEV ]
}
}
Run Code Online (Sandbox Code Playgroud)
值\ strings.xml中:
<resources>
<string name="app_name_default">AAA prod</string>
<string name="app_name_dev">AAA dev</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
值恩\ strings.xml中:
<resources>
<string name="app_name_default">AAA prod en</string>
<string name="app_name_dev">AAA dev en</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
的Manifest.xml:
<application
android:label="${applicationLabel}" >
</application>
Run Code Online (Sandbox Code Playgroud)
您可以采取多种方式。
您可以在应用程序级别创建manifestPlaceholders OR 。例如resValuebuild.gradle
buildTypes {
release {
...
manifestPlaceholders = [appLabel: "My App"]
//resValue "string", "appLabel", '"My App"'
}
debug {
...
manifestPlaceholders = [appLabel: "My App - Debug"]
//resValue "string", "appLabel", '"My App - Debug"'
}
}
Run Code Online (Sandbox Code Playgroud)
或者
如果有productFlavors,您可以在那里创建
flavorDimensions "env"
productFlavors {
dev {
dimension "env"
...
manifestPlaceholders = [appLabel: "My App - Development"]
//resValue "string", "appLabel", '"My App - Development"'
}
prod {
dimension "env"
...
manifestPlaceholders = [appLabel: "My Awesome App"]
//resValue "string", "appLabel", '"My Awesome App"'
}
}
Run Code Online (Sandbox Code Playgroud)
然后,AndroidManifest.xml如果您正在使用manifestPlaceholders,只需更改android:label="${appLabel}"如下,或者如果您正在使用resValue,只需更改android:label=@string/appLabel
<application
...
android:label="${appLabel}"> //OR `android:label=@string/appLabel`
<activity
...
android:label="${appLabel}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
注意:请确保在类别android:label中也进行更改。如果不需要使用in ,只需删除它即可。<activity>LAUNCHERandroid:label<activity>
如果不想build.gradle直接添加,可以values/string.xml选择添加ProductFlavors。例如
添加
<string name="appLabel">My App - Development</string>
Run Code Online (Sandbox Code Playgroud)
在app/src/dev/res/values/string.xml
和
<string name="appLabel">My Awesome App</string>
Run Code Online (Sandbox Code Playgroud)
在app/src/prod/res/values/string.xml
对于更动态的基于gradle的解决方案(例如,strings.xml一次在main中设置一个基本的应用程序名称,并避免在每种风味/构建类型组合的中重复自己strings.xml),请在此处查看我的答案:https : //stackoverflow.com/a/32220436/1128600
| 归档时间: |
|
| 查看次数: |
49848 次 |
| 最近记录: |