[译]Android Package Name Vs Application ID
2017-11-15 18:18
295 查看
Android Package Name Vs Application ID
原文链接:https://blog.mindorks.com/android-package-name-vs-application-id-ad95b08815a6为不同目的创建多APK
PackageName vs ApplicaitonId
如今,我们经常遇到需要为APK创建不同包名的情况。大多数人很容易就做到这点了,但是有时候我们因为applicationId和packageName而卡住。我们必须知道packageName和applicationId的区别。还有就是Java的package。以下三者经常搞混:
applicationId:BuildConfig.APPLICATION_ID
packageName:getApplicationContext().getPackageName()
Java package:BuildConfig.class.getPackage().toString()
让我们看一个例子。
下面是从例子Android应用中截取的build.gradle的代码片段
这里有两个不同的APK。
发布版本:com.mindorks.example.release
测试版本:com.mindorks.example.debug
下面是从相同的应用的maniffest文件截取的片段
下面是工程包片段
那么,让我们创建一个调试apk并看看三者的值。
仔细查看这些值。
下面展示了APK创建之后的AndroidManifest文件。
getPackageName与applicationId值一样,并且覆盖了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的故事到此为止。
哈啤寇丁:)
相关文章推荐
- Android Package Name vs. Application ID
- Android package属性、package name和Application ID三者的联系及区别
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- android ApplicationId 与 PackageName
- Android package属性、package name和Application ID三者的联系及区别
- Android package属性、package name和Application ID三者的联系及区别
- Android-Gradle 构建修改[applicationId]和[packageName]
- Android package属性、package name和Application ID三者的联系及区别
- Android package属性、package name和Application ID三者的联系及区别
- Android中applicationId与package name的区别
- 在Android中applicationId与package name的那些事
- 20170308_Android包名 - ApplicationId 与 PackageName
- 在Android Studio中修改包名?ApplicationId 与 PackageName
- Android Studio-ApplicationId 与 PackageName