我在gradle文件中设置了两种构建类型:debug和release.我希望能够为debug构建类型设置不同的应用程序图标.有没有办法通过构建类型,而不涉及产品口味?build.gradle文件如下.
apply plugin: 'android'
//...
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 30
versionName "2.0"
}
buildTypes {
debug {
packageNameSuffix '.debug'
versionNameSuffix '-SNAPSHOT'
}
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)
Ins*_*Bun 144
弄清楚了.你需要做的是创建一个单独的src文件夹debug,其中包含不同的图标.例如,如果您的项目布局如下,并且您的启动器图标被调用ic_launcher.png:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
Run Code Online (Sandbox Code Playgroud)
然后,为调试版本类型添加单独的图标,添加:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
-debug
-res
-drawable-*
-ic_launcher.png
Run Code Online (Sandbox Code Playgroud)
然后,当您在调试版本类型下构建时,它将使用调试文件夹中的ic_launcher.
qin*_*iao 78
这是一个方便的方法,虽然它有一个重要的缺点...两个发射器将被放入你的apk. - Bartek Lipinski
更好的方法:InsanityOnABun的回答
AndroidManifest.xml中
<manifest
...
<application
android:allowBackup="true"
android:icon="${appIcon}"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
的build.gradle
android {
...
productFlavors{
Test{
versionName "$defaultConfig.versionName" + ".test"
resValue "string", "app_name", "App-Test"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_test"
]
}
Product{
resValue "string", "app_name", "App"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
Github网址:使用Gradle构建多版本应用程序
isy*_*syi 11
您也可以在product flavor的部分AndroidManifest.xml文件中指定图标:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:icon"
android:icon="@drawable/alternative_icon" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
这将覆盖您在原始AndroidManifest.xml中指定的图标
分步解决方案,包括替换 mipmap-anydpi-v26 并保留所有维度的文件:
首先在 build.gradle (Module: app) 中定义你的构建类型 android -> buildTypes -> debug、internal 等
在项目层次结构中的 Android 下方,右键单击应用程序 -> 新建 -> 图像资源 -> 在路径中选择您的图标 -> 对背景层和旧版进行任何其他更改 -> 下一步 -> 在 Res 目录中选择所需的构建类型(调试、内部、主要等)-> 完成
这样,图标将取代您拥有的所有旧图标。
在使用具有多个维度的不同风格时获取不同的图标,例如:
flavorDimensions "color", "size"
productFlavors {
black {
dimension "color"
}
white {
dimension "color"
}
big {
dimension "size"
}
small {
dimension "size"
}
}
Run Code Online (Sandbox Code Playgroud)
这可以通过以下方式实现:
首先,将调试资源放在单独的文件夹中,例如:
src/blackDebug/res
src/whiteDebug/res
Run Code Online (Sandbox Code Playgroud)
其次,放置具有多个风味尺寸的键是源集名称必须包含所有可能的风味组合,即使其中一些尺寸不影响图标.
sourceSets {
// Override the icons in debug mode
blackBigDebug.res.srcDir 'src/blackDebug/res'
blackSmallDebug.res.srcDir 'src/blackDebug/res'
whiteBigDebug.res.srcDir 'src/whiteDebug/res'
whiteSamllDebug.res.srcDir 'src/whiteDebug/res'
}
Run Code Online (Sandbox Code Playgroud)
为了说清楚,当使用多个维度时,以下内容将不起作用:
sourceSets {
// Override the icons in debug mode
blackDebug.res.srcDir 'src/blackDebug/res'
whiteDebug.res.srcDir 'src/whiteDebug/res'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32453 次 |
| 最近记录: |