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

Mri*_*lla 11 android apk android-studio 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"
     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" >
Run Code Online (Sandbox Code Playgroud)

我正在丢失我的想法,隐藏调试清单文件并在构建之前弹出它,如果可能有两个单独的清单,那就太好了.

Bil*_*ote 27

在src /下创建一个"debug"文件夹并将其放在那里:https://github.com/androidfu/Now-Playing/tree/master/app/src

我的"发布"清单是在src/main /中,但我很确定你是否需要两个完全独立的清单文件,你可以使用src/release /和src/debug /.

  • Android Studio 1.4仅显示`debug` Manifest,但`release`则不显示 (4认同)
  • @MridangAgarwalla:“ Android会自动合并两个清单”吗?是的。“看来我不需要两个单独的清单,而只需要差异部分”-可能。清单合并很​​复杂,因此根据您要执行的操作,您可能需要为Android提供Gradle的更多帮助:http://tools.android.com/tech-docs/new-build-system/用户指南/清单合并 (2认同)

Dhi*_*pta 7

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

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

有关此合并的详细文档位于: https: //developer.android.com/studio/build/manifest-merge