调试buildType的自定义字符串

时间:2014-09-25 07:28:16

标签: android gradle

我有一个Android应用程序,我想更改调试和其他 buildTypes 的应用程序标签。我没有任何口味!

以下是我认为它应该工作的设置: Android Studio Setup

-src
   |-debug
      |-res
         |-values
            |-strings.xml
   |-main
      |-res
         |-values
            |-strings.xml
      |-java
      [...]

我没有自定义源集只是调试buildType:

buildTypes {
    debug {
        applicationIdSuffix ".debug"

    }
}

所以我虽然

sourceSets.debug.res.srcDirs = ['src/debug/res'] 

会诀窍。但事实并非如此。有什么想法吗?

How to change app name per Gradle build type不再有用了......

7 个答案:

答案 0 :(得分:21)

我找到了另一个很好的解决方案,使用明显的占位符:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
    android:label="${applicationLabel}">
    <activity
        android:label="${applicationLabel}">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

并在您的gradle文件中:

android {
    defaultConfig {
        manifestPlaceholders = [ applicationLabel:"@string/app_name"]
    }
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
            manifestPlaceholders = [ applicationLabel:"MyApp Debug"]
        }
    }
}

答案 1 :(得分:8)

buildTypes {
    release {
        resValue 'string', 'APP_NAME', '"My App Release"'
    }
    debug {
        resValue 'string', 'APP_NAME', '"My App Debug"'
    }
}

值\ strings.xml中

&LT; string name =&#34; app_name&#34; &GT; @串/ APP_NAME&LT; /串GT;

并在任何地方使用app_name

答案 2 :(得分:4)

你必须使用

   |-debug
      |-res
         |-values
            |-strings.xml

您的图片中,您有debug / res / strings.xml

你也不需要它(因为它是标准的,但问题不在这里)。

sourceSets.debug.res.srcDirs = ['src/debug/res'] 

答案 3 :(得分:2)

您可以在gradle中创建一个也可以在xml中使用的字符串:

buildTypes {
    debug {
        buildConfigField "String", "app_name", "AppDebug"
    }
    release {
        buildConfigField "String", "app_name", "AppRelease"
    }

然后在xml:

中使用它
android:label="@string/app_name"

请确保app_name中未指定strings.xml

答案 4 :(得分:0)

试试这个。

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
    sourceSets.debug.resources.srcDirs = ['src/debug/res']
}

答案 5 :(得分:0)

您是否记得在应用程序的build.gradle中删除目录列表?

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDir 'src'
//      res.srcDir 'res' <--- This line should be removed
        assets.srcDir 'assets'

答案 6 :(得分:0)

我知道这是一个很老的问题,但是我遇到了同样的问题并且解决了它。

如果您的应用build.gradle中有一个代码,则应更新这些代码。

debug.setRoot('build-types/debug')
release.setRoot('build-types/release')

这些代码会自动生成您的AppName.iml,并将默认调试和发布目录设置为/build-types/debug/res,这与src/debug/res不同。