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" >
我在构建之前隐藏调试清单文件并弹出它而失去了理智,如果可以有两个单独的清单,那就太好了。
在 src/ 下创建一个“debug”文件夹并将其放入其中:https://github.com/androidfu/Now-Playing/tree/master/app/src
我的“release”清单位于 src/main/ 中,但我很确定如果您需要两个完全独立的清单文件,您可以使用 src/release/ 和 src/debug/。
对于我们这些应用程序中有变体并且仍然需要自定义调试清单以在其变体中使用的人来说,以下信息可能会有所帮助:
src/debug
文件夹中 - 然后所有变体的清单将覆盖 this 一个。如果您想让调试清单仅应用于特定变体,那么您应该将其放在 src/variantnameDebug/AndroidManifest.xml
变体的名称必须与文件夹的名称完全匹配。 “构建变体”侧边栏显示变体名称列表,以及所选全名的变体。获取源集可能的文件夹位置的综合报告的另一种方法是从右侧的 Gradle 侧边栏运行位于 /Tasks/android/sourceSets 的 gradle 任务。:../src/debug/AndroidManifest.xml
发布清单:../src/release/AndroidManifest.xml
在 Android Studio 上显示 Release Manifest
:打开构建变体
窗口添加一个文件夹 src/androidDebug
,其中包含
AndroidManifest.xml
以及特定于调试的配置。
如果您有一些特定于调试的活动,Android Studio 在尝试运行这些活动时会给出一个模糊的错误:“组件激活异常
”。显然,到调试清单的链接不能 100% 工作。您可以通过在 build.gradle.kts
文件中显式指定清单的链接来解决此错误:
android {
...
sourceSets {
getByName("debug") {
manifest.srcFile("src/androidDebug/AndroidManifest.xml")
}
}
}