【作者 | 善小俊】
一、什么叫安卓包名?
比如“手机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共享的 |
com.example.app.adapter |
项目中用到的适配器类 |
com.example.app.view |
自定义的View,如常用的TitleBarView |
com.example.app.util |
工具类,如HttpUtil,ImageUtil,FileUtil |
com.example.app.db |
数据库类,如DataBaseHelper,MessageDB |
com.example.app.service |
服务类,如GetMsgService |
com.example.app.constant |
常量类 |
com.example.app.domain/modle/entity |
元素实体类,如对应注册用户信息的User类, |
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#
爱盈利(aiyingli.com)移动互联网最具影响力的盈利指导网站。定位于服务移动互联网创业者,移动盈利指导。我们的目标是让盈利目标清晰可见!降低门槛,让缺乏经验、资金有限的个人和团队获得经验和机会,提高热情,激发产品。
【转载说明】  若上述素材出现侵权,请及时联系我们删除及进行处理:8088013@qq.com