gpt4 book ai didi

android - 在不同的构建类型中自定义 AndroidManifest

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:26 25 4
gpt4 key购买 nike

我想在不同的构建类型中自定义 AndroidManifest。例如,在 Debug模式下,我只想导出一个 Activity。

假设主要 list :

/main/AndroidManifest.xml

<application>
<activity
android:name="com.example.MainActivity" />
</application>

调试 list :

/debug/AndroidManifest.xml

<application>
<activity
android:name="com.example.MainActivity"
android:exported="true" />
</application>

示例 list (与调试相同):

/example/AndroidManifest.xml

<application>
<activity
android:name="com.example.MainActivity"
android:exported="true" />
</application>

在调试 list 中,我得到 Duplicate registration for activity com.example.MainActivity

这就是我创建示例构建类型的原因。

/build.gradle

android {
buildTypes {
example.initWith(buildTypes.debug)
}
}

但它也不起作用。

[AndroidManifest.xml:17, AndroidManifest.xml:4] Trying to merge incompatible /manifest/application/activity[@name=com.example.MainActivity] element:
<activity
-- @android:name="com.example.MainActivity">
--</activity>
--(end reached)
<activity
++ @android:exported="true"
++ @android:name="com.example.MainActivity">
++</activity>

我想知道这是错误、缺少功能(将来会实现)还是我做错了什么?

我知道我可以在发布和调试中提供不同的 list (没有 /main 中的 list ),但我认为这不是一个好的解决方案。

编辑:到目前为止的解决方案是在资源中定义 bool 并在主 list 中使用它。在调试资源中, bool 值将为 true,而在发布版中为 false。这个解决方案似乎比重复的 list 好得多,但问题仍然存在。

最佳答案

从 gradle 插件 0.10 开始,它终于得到了支持。有关新 list 合并的更多信息:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

目前(gradle 插件 0.10)它需要在 build.gradle 中进行这个额外的配置

android {
useOldManifestMerger false
}

关于android - 在不同的构建类型中自定义 AndroidManifest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com