【发布时间】:2018-12-27 02:32:40
【问题描述】:
我正在从 github 源代码构建一个应用程序,我需要在同一设备上使用它的两个不同版本。 一个应用程序必须有什么不同才能成为不同的应用程序? 我想要一个小改动,而不是到处重命名包。
注意:没有 gradle。我在设备本身(使用 termux)上做它,它缺少 gradle。 该应用程序本身有一些本机代码和一些不同的包。
似乎 AndroidManifest.xml 中的 package 名称必须不同,当然任何引用的类都在 AndroidManifest.xml 中显式引用也必须存在。
但这足够了吗?具体来说,以下是否可以相同:
AndroidManifest.xml 中的其他内容?
主包中的所有其他类?
- 应用中的其他包?
- 原生库?
我猜清单中的所有其他名称都只是装饰,并不能识别应用程序。所以例如不同的应用程序可以在主屏幕上具有相同的名称。
包名用于命名应用程序的安装目录,因此它的所有其他数据 - dex 类、本机库等 - 都是不同的。
android 使用不同的类加载器加载每个应用程序是明智的,因此不同的应用程序可以具有相同的包。这避免了使用相同(流行)库的不同应用程序使用静态/类字段的常见场景中的冲突。
我的猜测来自这个答案: https://android.stackexchange.com/a/20793/108921
如果是这样...我可以创建一个新包,将引用的类移到其中,然后在 AndroidManifest.xml 中使用这个新包名。 (这些类访问以前在同一个包中的其他类可能存在问题,但我认为这是一个不同的问题。
【问题讨论】:
标签: android build apk android-manifest