20170308_Android包名 - ApplicationId 与 PackageName
2017-03-08 23:22
399 查看
1.介绍:
1.1 概念
Android 应用都有自己的包名。包名是设备上每个应用程序的唯一标识,同样也是 Google Play 商店里的唯一标识。
1.2 解释说明
假如你已经使用某个包名来发布应用,就不能再去改变应用的包名,因为这样做会导致你的应用被视为一个全新的应用,你现有的用户也不会收到应用的更新通知。2.用途:
1.应用程序的唯一标识2.用于在源码中引用 R 类以及解析注册相关的 activity/service,对应 Java
的包名概念。
R文件 用来保存资源的引用,所以如果你在其他包中的代码需要引用资源,对应的 .Java 文件需要导入com.xxx.xxx.R
3.设置包名:
3.1 package
3.1.1 设置 package在AndroidManifest.xml中的 manifest节点配置 package
这里设置的包名,对应 用途 中 第二点:用于在源码中引用
R 类以及解析注册相关的 activity/service,对应 Java 的包名概念。
3.1.2 解释说明
在重构代码时,如果需要改变package 只需在导包时重新导入修改后正确的包即可,不会影响到app最终的id。
3.2 applicationId
3.2.1 设置 applicationId在app/build.gradle 下
这里设置的包名,对应 用途 中 第一点应用程序的唯一标识
apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "19.1" defaultConfig { applicationId "com.example.my.app" minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" } ...
3.2.2 解释说明
在旧版本的 Android
Gralde 构建系统中,应用的包名由manifest 中根节点的 package 属性决定(正如现在的applicationid) ,作为app的唯一标识。
但是在新版本的Android Gralde 构建系统中,分别使用的applicationid和 package。之所以这么做,是为了解耦。方便代码的重构。
4.扩展
4.1 构建不同版本的applicationid
4.1.1 说明
新版本Android Gralde 构建系统,可以通过设置applicationid来构建多个不同版本的应用。
例如,你可以同时构建免费版和专业版的应用(使用 flavor),并且它们在
Google Play 上也应该要有不同的包名,这样它们就能够在同一设备上安装并且能够单独购买使用等等。
同样的,你也可以构建
“debug”、“alpha”、“beta” 版的应用(使用 build type),它们也同样可以有唯一的包名。
4.1.2 配置
你可以通过以下的
Gradle DSL 方法来为不同的 flavor 和 build type 定义不同的 applicationId:
app/build
productFlavors { pro { applicationId = "com.example.my.pkg.pro" //专业版 } free { applicationId = "com.example.my.pkg.free" //免费版 } } buildTypes { debug { applicationIdSuffix ".debug" //debug版本 } } ....
4.2 注意事项
4.2.1
出于兼容性考虑,如果没有在
build.gradle 文件中定义 applicationId,那么 applicationId 将默认为 AndroidManifest.xml 中所指定的 package 的值。在这种情况下,applicationId 和
package
显然未解耦,此时重构代码也将会更改应用的 id !在 Android Studio 中,新建的项目会指定这两个值。
4.2.2
package 始终必须在默认
AndroidManifest.xml 文件中指定。如果存在多个 manifest(例如一个 flavor 有特定的 manifest 或一个 buildType 有特定的 manifest),package 可不指定,但如
果被指定,必须和主
manifest 中指定的 package 完全相同。
版权说明: 根据 《http://blog.csdn.NET/maosidiaoxian/article/details/41719357。
作者 貌似掉线 》
整理
相关文章推荐
- Android-Gradle 构建修改[applicationId]和[packageName]
- Android package属性、package name和Application ID三者的联系及区别
- Android官方技术文档翻译——ApplicationId 与 PackageName
- [译]Android Package Name Vs Application ID
- Android package属性、package name和Application ID三者的联系及区别
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android Package Name vs. Application ID
- android ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android ApplicationId 与 PackageName
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android中applicationId与package name的区别
- Android package属性、package name和Application ID三者的联系及区别
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android package属性、package name和Application ID三者的联系及区别
- Android官方技术文档翻译——ApplicationId 与 PackageName
- 在Android中applicationId与package name的那些事
- Android package属性、package name和Application ID三者的联系及区别
- ApplicationId 与 PackageName 的区别
- Android studio里packagename和applicationId