applicationId和packageName 的异同

简介: applicationId和packageName 的异同

关于作者: CSDN内容合伙人、技术专家, 从零开始做日活千万级APP,带领广告团队广告单日营收超千万。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业化变现、人工智能等,希望大家多多支持。

@TOC

在这里插入图片描述

一、导读

我们继续总结学习基础知识,温故知新。

今天我们记录一下 applicationId & packageName 的异同。

二、概览

在 Android Studio 中创建新项目时,applicationId 与创建时选择的 Java 样式软件包名称完全一致。
不过,除了这一点,应用 ID软件包名称彼此无关。您可以更改代码的软件包名称(代码命名空间),这不会影响应用 ID,反之亦然(但同样,发布您的应用后,不得更改应用 ID)

  • application id 与 package name 分工明确
    • application id 负责 App 的进程 ID
    • package name 负责 R 的包名以及 Manifest 中 Activity 等四大组件的相对包名

如果 build.gradle 中没有指定 applicationId,那么 application id 的默认值就是 manifest 的 package 属性值

虽然应用 ID 看起来就像传统的 Java 软件包名称一样,但应用 ID 的命名规则限制性更强一些:

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

2.1 更改软件包名称

默认情况下,项目的软件包名称与应用 ID 匹配,果您要更改软件包名称,需要注意的是,软件包名称(由项目目录结构定义)应始终与 AndroidManifest.xml 文件中的 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 属性来发挥两种作用:

  • 它将此名称用作应用生成的 R.java 类的命名空间。
  • 它会使用此名称解析清单文件中声明的任何相关类名。

三、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

ddd

相关文章
|
1月前
|
索引
for in 和 for of的区别
for in 和 for of的区别
|
5月前
|
Web App开发 安全 应用服务中间件
浅谈C/S vs. B/S的区别
浅谈C/S vs. B/S的区别
32 0
|
10月前
|
存储
逻辑移位与算术移位的区别
用一句简单的话来说就是:逻辑移位不需要考虑符号位,算术移位需要考虑符号位,我们都知道。数在计算机中都是以补码的形式来存储的,这才造成了逻辑移位和算术移位的的差别。
206 0
||、&&、!的使用与区别
||、&&、!的使用与区别
60 0
|
SQL Java 数据库连接
#{}与${}的区别
面试的时候经常碰到这样的题目:#{}和${}的区别是什么? 回答这样的问题首先要知道这两个符号是干嘛用的,然后再通过实例来解释两者的不同,这样才能更好的说服面试者。
88 0
|
JSON 数据格式
中writeValue和writeValueAsString的区别
writeValueAsString(obj):将传入的对象序列化为json,返回给调用者
c++ *和&的区别
c++ *和&的区别
289 0
写出 && 和 & 的区别。
写出 && 和 & 的区别。
71 0
@EnableEurekaClient上有@EnableDiscoveryClient区别
@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
906 0
|
新零售 网络协议 网络安全
常用的高防有哪几类?主要的区别是什么?
有一些用户受到DDOS攻击的时候,不知道自己该选择什么样的高防来防御攻击,墨者安全今天主要讲下常用的高防有哪几类?以及主要的区别?高防主要分为HTTPS高防、TCP高防、CDN高防、香港高防、海外高防。