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

时间:2015-03-28 13:23:48

标签: android android-studio apk android-gradle

是否可以在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" >

我在收集调试清单文件并在构建之前弹出它而失去理智,如果可能有两个单独的清单,那就太棒了。

3 个答案:

答案 0 :(得分:23)

创建&#34;调试&#34; src /下的文件夹并将其放在那里:https://github.com/androidfu/Now-Playing/tree/master/app/src

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

答案 1 :(得分:0)

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

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

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


在Android Studio上显示发布清单

  1. 打开构建变体窗口
  2. debug 更改为 release
  3. 将在Project-> Android-> manifests中可见

答案 2 :(得分:0)

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

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

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