如何在buildgradle文件中更改android应用程序名称

如何在buildgradle文件中更改android应用程序名称,gradle,android-gradle-plugin,build.gradle,Gradle,Android Gradle Plugin,Build.gradle,我正在使用gradle为2个小型android应用程序创建不同的风格,我只想知道我是否可以在build.gradle中的xml文件中为我的不同风格编辑应用程序名称。你所说的应用程序名称是什么意思?清单中的应用程序包名称还是启动器中显示的应用程序名称 如果是前者,请执行以下操作: android { productFlavors { flavor1 { packageName 'com.example.flavor1' } flavor2 { p

我正在使用gradle为2个小型android应用程序创建不同的风格,我只想知道我是否可以在build.gradle中的xml文件中为我的不同风格编辑应用程序名称。

你所说的
应用程序名称是什么意思?清单中的应用程序包名称还是启动器中显示的应用程序名称

如果是前者,请执行以下操作:

android {
  productFlavors {
    flavor1 {
      packageName 'com.example.flavor1'
    }
    flavor2 {
      packageName 'com.example.flavor2'
    }
  }
}
也可以覆盖应用程序名称,但您必须提供一个flavor overlay资源

因此,请创建以下文件:

  • src/flavor1/res/values/strings.xml
  • src/flavor2/res/values/strings.xml

在它们中,只需覆盖包含应用程序名称的字符串资源(清单通过类似于
@string/app\u name
的内容用于主活动标签的字符串资源)。您还可以根据需要提供不同的翻译。

您可以使用
resValue
,例如

debug {
    resValue 'string', 'app_name', '"MyApp (Debug)"'`
}
release {
    resValue 'string', 'app_name', '"MyApp"'
}

确保您的AndroidManifest对应用程序使用了
android:label=“@string/app_name”
,并从strings.xml中删除app_name,因为当gradle尝试合并它们时,它将与生成的
strings.xml
冲突

这个答案是基于Tom的,它工作得最好,您可以使用
gradle.properties
在构建过程中进行进一步的动画制作

build.gradle
中:

调试{
resValue'字符串','应用程序名称',应用程序名称
}
gradle.properties
中:

APP_NAME=“模板1”

实际上。。。寻求更明确的解释

mainbuild.gradle中:

ext {
    APP_NAME = "My Fabulous App"
    APP_NAME_DEBUG = "My Fabulous App debug"
}
android {
    buildTypes {
        debug {
            manifestPlaceholders = [appName: APP_NAME_DEBUG]
        }
        release {
            manifestPlaceholders = [appName: APP_NAME]
        }
    }
}
应用程序build.gradle中:

ext {
    APP_NAME = "My Fabulous App"
    APP_NAME_DEBUG = "My Fabulous App debug"
}
android {
    buildTypes {
        debug {
            manifestPlaceholders = [appName: APP_NAME_DEBUG]
        }
        release {
            manifestPlaceholders = [appName: APP_NAME]
        }
    }
}
所以在AndroidManifest.xml中

<application
    ...
    android:label="${appName}"
    >

这是可能的。瞧!对于发布和调试,您有不同的应用程序名称。

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.myapp"> 


<application
    tools:replace="android:label"
    android:label="${appName}"
    android:theme="@style/AppTheme">

 <activity
    android:name=".MainActivity"      
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:label="${appName}"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

确切地说,我正在寻找一个覆盖应用程序名称的解决方案,我使用了copy方法,因此我有一个新文件夹,其中包含一个新的string.xml修改,包含新的应用程序名称!问题是如何避免创建新文件。我只想换一个。这是最好的办法。修改文件并不是一个好主意,因为它会破坏对增量构建的检测。find app/src/freefocket/res/values/strings.xml-type f-exec perl-pi-w-e's/My_Application/free_facebook/g'{}\;更新:Android gradle插件现在可以定义一个资源,如:resValue,,以提供gradle脚本中的字符串。@HassanIbraheem文档参考?这实际上是一个很好的答案。我不知道为什么人们会在手动创建
strings.xml
内容的基础上投票选出答案,但resValue应该是正确的方法,因为你可以将实际值放入
gradle.properties
。在我看来,这是最好的方法,因为它允许发布版本使用本地化的应用程序名称(
manifestPlaceholders=[appName:@string/app_name”]
),以及用于调试生成的非本地化版本。我已经回答了,您可以查看我的答案,它可能会对您有所帮助。