[译]Android Package Name Vs Application ID

Android Package Name Vs Application ID

原文链接:https://blog.mindorks.com/android-package-name-vs-application-id-ad95b08815a6

Android Package Name Vs Application ID

为不同目的创建多APK

PackageName vs ApplicaitonId

如今,我们经常遇到需要为APK创建不同包名的情况。大多数人很容易就做到这点了,但是有时候我们因为applicationId和packageName而卡住。我们必须知道packageName和applicationId的区别。还有就是Java的package。

以下三者经常搞混:

  1. applicationId:BuildConfig.APPLICATION_ID
  2. packageName:getApplicationContext().getPackageName()
  3. Java package:BuildConfig.class.getPackage().toString()

让我们看一个例子。

下面是从例子Android应用中截取的build.gradle的代码片段

build.gradle

这里有两个不同的APK。

  1. 发布版本:com.mindorks.example.release
  2. 测试版本:com.mindorks.example.debug

下面是从相同的应用的maniffest文件截取的片段

AndroidManifest.xml

下面是工程包片段

工程结构

那么,让我们创建一个调试apk并看看三者的值。

仔细查看这些值。

下面展示了APK创建之后的AndroidManifest文件。

最终的AndroidManifest

getPackageNameapplicationId值一样,并且覆盖了AndroidManifest的包名。所以最终的AndroidManifest包含相同的applicationId。所以,在最后时刻,getPackageName与applicationId相同,因为applicaitonId覆盖了AndroidManifest的packageName。

但是对于Java代码,包名与工程结构一致。代码中使用包名来引用R类,以及解析任何相关的activity,service注册,都需要调用manifest中定义的包名。因此,AndroidManifest应当使用与Java包名一致的包名来解析相关的activity,service。

因此,使用相同的java包名,我们可以创建任意数量的具有唯一applicationid的APK。

但是最终的AndroidMainfest只包含唯一的applicationId。

如果必须改变工程结构,则需要修改Manifest.xml中的packageName。

如果在manifest文件重命名了包名,即使他们具有相同的名称,也不会影响与applicationId。

使用如上方法设置productFlavors可创建多个APK。

记住,只要在Google Play商城发布了应用,**ApplicationId
就不可改变了**。

applicationId的故事到此为止

哈啤寇丁:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值