关于 应用ID(applicationId)

应用ID

  1. 每个Android 应用有唯一的应用ID
  2. 应用ID 可以在设备上和 Google Play 商店中对应用进行唯一标识。
  3. 应用版本更新必须保证 应用ID(以及使用它签署的证书)与原始 APK 相同。
  4. 应用发布后绝不应该更改应用ID。

设置应用ID

通过模块的 build.gradle 文件中的 applicationId 属性定义,如下面所示:

android {
    defaultConfig {
        applicationId "com.example.myapp"
        ...
    }
    ...
}

应用 ID 的命名规则

  1. 必须至少包含两段(一个或多个圆点)。
  2. 每段必须以字母开头。
  3. 所有字符必须为字母数字或下划线 [a-zA-Z0-9_]。

注意: 有些 Android API 会在其方法名称和参数名称中使用术语“包名”,这实际上是应用 ID。例如,Context.getPackageName() 方法返回的是应用ID 而不是包名。

打包动态更改 应用ID

比如我们想要对游戏进行OPPO和VIVO两个渠道打包。(两个渠道包内容一样,单单是应用ID 不一样),进行如下配置。

android {
    defaultConfig {
        applicationId "com.example.game"
    }
    productFlavors {
        free {
            //applicationIdSuffix是添加后缀的意思
            applicationIdSuffix ".oppo"
            // 上面配置等同于
            // applicationId "com.example.game.oppo"
        }
        pro {
            applicationIdSuffix ".vivo"
        }
    }
}

配置运行后最终会生成 应用ID 为“com.example.game.oppo”和“com.example.game.vivo”的apk。

注意: 对于与之前的 SDK 工具的兼容性,如果您不在 build.gradle
文件中定义 applicationId 属性,构建工具会将 AndroidManifest.xml 文件中的包名用作应用 ID。
这种情况下,重构包名也会更改应用 ID。

package 属性

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
    android:versionName="1.0" >

Android 构建工具会将 package 属性用于下面两方面:

  1. 它会将此名称用作应用生成的 R.java 类的命名空间。

    示例:对于上面的清单,R 类将为 com.example.myapp.R。

  2. 它会使用此名称解析清单文件中声明的任何相关类名称。

    示例:对于上面的清单,声明为 的 Activity 将解析为 com.example.myapp.MainActivity。

注意: 尽管清单 package 和 Gradle applicationId 可以具有不同的名称,但构建工具会在构建结束时将应用 ID 复制到 APK 的最终清单文件中。
所以,如果在构建后检查 AndroidManifest.xml 文件,package 属性发生更改就不足为奇。
实际上,Google Play 商店和 Android 平台会注意 package 属性来标识应用;所以构建利用原始值后(用作 R 类的命名空间并解析清单类名称),它将会舍弃此值并将其替换为应用 ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值