Android 如何为发布版本和调试版本提供不同的清单文件?

Android 如何为发布版本和调试版本提供不同的清单文件?,android,android-studio,apk,android-gradle-plugin,Android,Android Studio,Apk,Android Gradle Plugin,在Android Studio中,我的APK的调试版本和发布版本可能有不同的清单文件吗 通常我不需要这样的东西,但在调试模式下,我的应用程序在不同的用户id和进程中运行,这在清单中定义。我已附加了调试清单的差异: --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,5 +1,6 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android"

在Android Studio中,我的APK的调试版本和发布版本可能有不同的清单文件吗

通常我不需要这样的东西,但在调试模式下,我的应用程序在不同的用户id和进程中运行,这在清单中定义。我已附加了调试清单的差异:

--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,5 +1,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.mridang.address"
+    android:sharedUserId="com.mridang.dashclock"
     android:versionCode="10"
     android:versionName="1.0" >

@@ -14,6 +15,7 @@
     <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
+        android:process="com.mridang.dashclock"
         android:label="@string/application_name"
         android:theme="@android:style/Theme.Holo.Light.DarkActionBar" >
——a/AndroidManifest.xml
+++b/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -14,6 +15,7 @@
在构建之前,我会将调试清单文件隐藏起来并弹出它,如果有两个单独的清单,那就太好了。

在src/下创建一个“debug”文件夹,并将其放在那里:


我的“release”清单在src/main/中,但我很确定如果您需要两个完全独立的清单文件,您可以使用src/release/和src/debug/

是的,这是可能的。使用以下路径:

调试清单:../src/Debug/AndroidManifest.xml

发布清单:../src/Release/AndroidManifest.xml


在Android Studio上显示发布清单:

  • 打开“生成变体”窗口
  • 从调试更改为发布
  • 将在Project->Android->清单上可见

  • 对于我们这些在应用程序中有变体并且仍然需要自定义调试清单以便在变体中使用的人,以下信息可能会有所帮助:

  • 我们用源集合覆盖的顺序可能是最重要的,因为合并沿着优先级链级联。如果我们希望所有调试版本都有清单,那么我们应该将其放在
    src/debug
    文件夹中,然后所有变量的清单都将覆盖此清单。如果希望调试清单仅应用于特定的变量,则应将其放在
    src/variantnameDebug/AndroidManifest.xml
  • 变体的名称必须与文件夹的名称完全匹配。Build Variants侧栏显示变量名称的列表,以及所选全名的变量。获取源集可能的文件夹位置的全面报告的另一种方法是从右侧的gradle侧栏在/Tasks/android/sourceset处运行gradle任务
  • 合并清单视图是必不可少的,可能是调试正在发生的事情的最有用的工具。打开任何清单文件时,请查看编辑器选项卡栏的底部。切换到此视图将提供一个已编译的彩色报告,其中包含合并在一起的所有清单以及任何错误和建议

  • 这里有关于这个合并的详细文档:

    这个例子看起来非常有用。Android会自动合并这两个清单吗?还是我需要修改Gradle配置中的某些内容?这个例子正是我需要的,因为看起来我不需要两个单独的清单,只需要不同的部分。@MridangAgarwalla:“Android会自动合并这两个清单吗”——是的。“看起来我不需要两个单独的清单,只需要不同的部分”——可能吧。清单合并很复杂,因此,根据您试图执行的操作,您可能需要向Gradle for Android提供更多帮助:我只在app/build.Gradle文件中定义调试{}和发布{}构建类型。@commonware:我刚刚尝试过,看起来清单是自动合并的。我没有得到
    INSTALL\u FAILED\u UID\u CHANGED
    错误,APK工作正常。Android Studio 1.4只显示
    debug
    清单,但
    release
    没有