数极客首页

APP推广 | 什么是安卓APP的包名,包名的规范和使用技巧

【作者 | 善小俊】

一、什么叫安卓包名?

 

比如“手机QQ”,包名就是com.tencent.mobileqq
软件安装完后,在/data/app(不是/system/data/app)目录下的就是软件的包名,后面-1,-2,就是你第一次安装或者更新安装的意思。

 

二、如何命名,需要符合怎样的命名规范?

 

Java中我们通常把具备相同或相似功能的一些类放在同一个包中,当然 不同公司会有不同的命名方式,但大体都相同,一个好的命名应见名知义,提高代码可读性,以利于后期代码的修改与维护。下面基于我自己做项目中的一些感触谈谈自己对包命名规范的理解。

 

1、Java包命名规范

1)包(packages): 采用反写域名命名规则,即com.xx.xxx.xxxx形式

     全部使用小写字母。一级包名为com,二级包名为xx(一般为公司或个人域名),三级包名根据应用进行命名,四级包名为功能模块名。如:com.tencent.qq.activitys,这样具备较高可读性,一看就知道是腾讯公司QQ软件中存放activity的包。

下面是一些常见的包命名组织方式。

 

 

com.example.app.activitys 

用来组织Activity类

com.example.app.base

基础共享的类,如多个Activity共享的
BaseActivity或整个应用共享的MyApplication类

com.example.app.adapter

项目中用到的适配器类

com.example.app.view

自定义的View,如常用的TitleBarView

com.example.app.util

工具类,如HpUtil,ImageUtil,FileUtil

com.example.app.db

数据库类,如DataBaseHelper,MessageDB

com.example.app.service

服务类,如GetMsgService

com.example.app.constant

常量类

com.example.app.domain/modle/entity

元素实体类,如对应注册用户信息的User类,
对应聊天信息的TextMessage类

com.example.app.broadcast

广播服务类

 

2)资源布局文件(XML文件(layout布局文件)):全部小写,采用下划线命名,我一般按照组件名_功能名_属性名方式

如:activity_login,fragment_constact_child.这样当你在Activity的onCreate中使用R.layout.的时候就只需筛选activity开头的xml文件,在Fragment的onCreateView中使用R.layout.的时候就只需筛选fragment开头的xml文件,这样就可以缩小聚焦范围,而且这样的命名具备较高的可读性,很容易知道fragment_constact_child表示某个ConstactFragment类中的child视图。

 

3)控件:全部小写,采用下划线命名,我一般按照布局文件名_控件名_功能名_属性名方式(前面的布局文件名可选可不选,选的话具备较高的可读性)

如:fragment_constact_child_img_avatar表示fragment_constact_child布局文件中的用户头像的ImageView。

 

三、如何避免包名冲突

 

因为包名是唯一标识,为了避免与其他应用的包名重复,产生冲突,您可以这样命名:

将您的域名反转过来作为前缀,比如如果您的域名是zan.com,那么包名可以用com.zan开头,这样可以有效的避免重复

在后面增加描述产品名称的字符,比如果果您的应用是视频应用,可以命名为com.zan.video

如果您没有域名,可以使用自己的邮箱作为前缀,比如 com.163.WoDeYouXiang

 

四、Android 应用的 apk 包名和签名一致和不一致时对软件升级有什么样的影响?

 

Android系统中为每一个应用程序分配的一个标识,每个应用的标识都必须是不同的。

相当于你的app的id。同一台手机里不能同时装两个相同Package name的app。

那么他具体有什么作用呢?

android系统使用包名(package name)来判定应用程序的同一性,但是由于包名可以由开发者自由设置,为了保护应用程序不被其他开发者开发的同包名应用覆盖,用于发布的Android应用程序需要加上开发者签名。

在应用程序被升级的时候,Android系统将会验证被升级的应用程序包与升级后的应用程序包是否使用了同样的开发者签名。

 

如果一致,该应用程序可以被升级;

 

如果不一致,那么将被视为非同一开发者开发的应用程序,用户需要先卸载已经安装的应用然后再安装新应用,在卸载的过程中,应用在android系统中所保存的设置信息(SavedPreferences)将被删除,以保护应用本地保存的资料不被盗取。

 

五、Android个人项目如何取合适的包名

 

对于个人项目而言,如果你有个人域名,就用它的逆序,如me.shengbin.AppName, cn.yourname.AppName;

这样可以保证唯一性(因为域名是唯一的),是最好的方法。否则,就按某个能定位你的范围从大到小写就行。

如果你是某个学校的,例如北大,不妨用pku.yourname.AppName的形式;或者你住在北京,也可以用beijing.yourname.AppName。而且包名不限于三级,例如你可以命名为cn.beijing.pku.yourname.AppName。

总之,首先考虑尽可能与别的包名不重复,其次考虑层次感和看上去不别扭即可。

#END#

给大家推荐我国新一代大数据用户行为分析与数据智能平台:数极客(https://www.shujike.com),是支持无埋点、前端埋点、后端埋点、API导入四种混合数据采集方式,整合分析用户行为数据和业务数据,可以自动监测网站、APP、小程序等多种渠道推广效果分析,是增长黑客们必备的互联网数据分析软件。数极客支持实时多维分析、漏斗分析、留存分析、路径分析等十大数据分析方法以及APP数据分析网站统计网站分析小程序数据统计用户画像等应用场景,业内首创了六种提升转化率的数据分析模型,是用户行为分析领域首款应用定量分析与定性分析方法的数据分析产品

发表评论

评论已关闭。

相关文章