让我们分析一下这种情况:
gradle文件上的清单包和应用程序ID:com.myweb.mysuperapppackagenamewithaso
我的应用程序源码中的真正的java包:
com.mysourcecode.package1
com.mysourcecode.package2这里有MainActivity:
com.mysourcecode.package1.MainActivity.java这是可能的和安全的吗?清单包和applicationID可以与应用程序的真正java包不同吗?
发布于 2017-11-15 16:58:14
下面是我们需要考虑的三件事,
applicationId: BuildConfig.APPLICATION_ID
packageName: getApplicationContext().getPackageName()
Java package: BuildConfig.class.getPackage().toString()getPackageName给出了在最后时刻从gradle文件创建的相同的applicationId,它overrides AndroidManifest包。最终的AndroidManifest包含相同的applicationId.The getPackageName与applicationId相同,因为applicationId在最后时刻覆盖AndroidManifest中的packageName。
但对于Java代码,包与项目结构相同。源代码中用来引用R class并解析任何相关活动、服务注册的包仍然被称为清单中定义的包。因此,AndroidManifest应该有与Java包相同的包来解析相关的活动、服务。
因此,使用相同的java包,我们可以使用所有唯一的applicationId创建任意数量的APK。
https://stackoverflow.com/questions/47302910
复制相似问题