想第一时间获取我的最新文章,请关注公众号: 技术特工队

在 Android Gradle Build System 之前,PackageName 就是 App 的进程 id。

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

此处的 package 属性有两个用途:

  1. App 的进程 ID
  2. R 的包名以及 Manifest 中 Activity 等四大组件的相对包名。

但是,Android 利用 Gradle 作为 Build System 之后就“起风了”。

apply plugin: 'com.android.application'
android {compileSdkVersion 19buildToolsVersion "19.1"defaultConfig {applicationId "com.example.my.app"minSdkVersion 15targetSdkVersion 19versionCode 1versionName "1.0"}复制代码

com.android.application 插件的 android 这个 DSL container 中定义了一个 applicationId,这个 applicationId 取代 package name 成为 App 的进程 id。

不同的 flavor 或者 build type 可以拥有不同的 application id,也就是不同的进程 id。

productFlavors {pro {applicationId = "com.example.my.pkg.pro"}free {applicationId = "com.example.my.pkg.free"}
}buildTypes {    debug {applicationIdSuffix ".debug"}
}复制代码

所以,application id 与 package name 分工明确。

总结:

  1. application id 负责 App 的进程 ID
  2. package name 负责 R 的包名以及 Manifest 中 Activity 等四大组件的相对包名
  3. 如果 build.gradle 中没有指定 applicationId,那么 application id 的默认值就是 manifest 的 package 属性值。

想第一时间获取我的最新文章,请关注公众号: 技术特工队

ApplicationId 与 PackageName 的区别相关推荐

  1. Android官方技术文档翻译——ApplicationId 与 PackageName

    本文译自androd官方技术文档<ApplicationId versus PackageName>,原文地址:http://tools.android.com/tech-docs/new ...

  2. ApplicationId 与 PackageName

    android studio中 applicationid和package的区别 在新的 Android Gradle 构建系统中,你可以轻松地构建多个不同版本的应用.例如,你可以同时构建免费版和专业 ...

  3. 不一样的Gradle多渠道配置总结

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 好久没有写博客了,突然想把这段时间项目中使用到的技术和多渠道相关的认识总结分享一下~ 一.新增渠道 使用AndroidStudio ...

  4. FileProvider 在 Android N 上的应用

    作者:才华横溢的段老师 蓝田大营 一.背景 Android 从 N 开始不允许以 file:// 的方式通过 Intent 在两个 App 之间分享文件,取而代之的是通过 FileProvider 生 ...

  5. java实现断点续传_Android 强升逻辑和实现

    作者:爱好装逼的 梁飞 "强制升级"会中断用户操作,阻碍正常使用,看似是一个不光彩的行为,但是智者千虑必有一失,我们无法保证 App 的正确性,在某些紧急情况下,强制升级还是非常必 ...

  6. Android 多渠道打包实操(更改包名、图标、主题资源 、替换常量、第三方SDK Appkey配置)

    最近在做一个通用版的会员系统,给予不同的公司使用,先前是通过切换版本分支来管理的,后面发现实在是繁琐和痛苦管理,仅仅是需要更改不同的常量.主题资源.包名.图标等等,主体代码逻辑功能基本不变. 先前了解 ...

  7. 利用 Android Studio 和 Gradle 打包多版本APK

    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html ==================================== ...

  8. Android Studio下项目构建的Gradle配置及打包应用变体

    Gradle简介   Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点. ...

  9. Android之项目中如何用好构建神器Gradle?

    Gradle虽为构建神器,但感觉学习曲线比较陡峭.Gradle User Guide内容很多,但有点太多了,多的你看不完,Gradle Plugin User Guide一篇文章主要讲了Android ...

最新文章

  1. wofstream写中文失败,导致stream对象badbit
  2. indexes和indices的区别(下标)
  3. 在Redhat中添加微软雅黑字体
  4. python itchat 的使用
  5. object references an unsaved transient instance - save the transient instance before flushing .
  6. Centos 7 设置tomcat开机自启动
  7. 移动端API接口优化的术和结果
  8. MySQL常见故障处理手册_转
  9. nginx 安全优化
  10. WORD中如何进行双行合一
  11. 运动控制+机器视觉Demo软件框架系统概述
  12. 基于用户的协同过滤Movielens电影推荐系统简单实例
  13. fiddler和wireshark对比
  14. 图片放大以后不清晰怎么办?
  15. 关于NetCore+饿了么开放平台+奇门+聚石塔对接的解释说明
  16. 浏览器缓存机制 过期机制和验证机制
  17. MATLAB图像数字水印的方案
  18. php发送邮件email
  19. 人机交互技术课程实验报告《社交点评APP》系统移动界面分析报告
  20. 最长上升子序列(动态规划)

热门文章

  1. Nodejs 环境配置终极解决方案
  2. 认识Linux的磁盘配额(转载)
  3. python 自动化对比返回结果
  4. lamp下mysql安全加固
  5. mount /mnt/cdrom 提示错误信息“mount: can't find /mnt/cdrom in /etc/fstab or /etc/mtab”
  6. 查找字符串里面有没有相同的字符- -
  7. Nginx 禁止某 IP 访问
  8. 【javascript】深入理解对象
  9. MySQL · 捉虫动态 · 并行复制外键约束问题二
  10. 【011】◀▶ C#学习(八) - IO命名空间