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


          Warning: Invalid argument supplied for foreach() in /data/cxweb/www/gupowang.com/public/article/view.html on line 71
          7年前

          【作者 | 善小俊】

          一、什么叫安卓包名?

           

          比如“手機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

          工具類,如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類,
          對應聊天信息的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#

          收藏

          {{favCount}}

          個人收藏

          投稿請戳這里!投稿
          0

          次分享

          文章評論(0)

          {{ user.nickname }}
          發表評論
          登錄 進行評論
          加載更多 正在加載中... 沒有更多了