让我们分析一下这种情况:
gradle文件上的清单包和应用程序ID:com.myweb.mysuperapppackagenamewithaso
我的应用程序源代码中的真实java包:
com.mysourcecode.package1
com.mysourcecode.package2
使用MainActivity:
com.mysourcecode.package1.MainActivity.java
这可行且安全吗?清单包和applicationID可能与应用程序的真实java包不同吗?
答案 0 :(得分:0)
下面给出了我们需要考虑的三件事,
applicationId: BuildConfig.APPLICATION_ID
packageName: getApplicationContext().getPackageName()
Java package: BuildConfig.class.getPackage().toString()
getPackageName
提供了与gradle文件最后一刻创建的applicationId
相同的overrides
AndroidManifest
包。最终的 AndroidManifest包含相同的applicationId 。getPackageName与applicationId相同,因为applicationId会在最后时刻覆盖AndroidManifest中的packageName。
但是对于Java代码,包与项目结构相同。源代码中用于引用R class
并解析任何相关活动,服务注册的包继续被称为清单中定义的包。因此,AndroidManifest应该具有与Java包相同的包来解析相关活动,服务。
因此,使用相同的java包,我们可以使用所有唯一的applicationId创建任意数量的APK。