本文中總結一下 Android 開發中容易被忽視的一些注意事項吧:
一、謹慎選擇包名
包名 (Package Name) 就相當於一款應用在戶口本上登記的名字,是系統用來區分不同應用的字段。重復的包名會被認為是同一款應用,不能同時安裝在一個系統里。一般來說,包名建議使用域名反序。比如豌豆莢的網站域名是 www.wandoujia.com,那么豌豆莢的一系列 Android 應用的包名就是 com.wandoujia.***。這種約定俗成的辦法可以最大程度地避免“撞名”的事故。
案例一
某個手機 ERP 客戶端的開發者,在開發應用時使用了 Adobe 的工具,同時也參考了 Adobe 的官方教程,從而將應用命名為 air.Main 這樣的通用包名,跟另一個游戲重名了。於是,在升級和洗白白的過程中就都產生了混亂……所以取名要慎重啊!
案例二
還 有個開發者,不知為何給幾個不同的應用都使用了同一個包名。於是“com.hexin.qs.app.android”這個包名,對應了“申國萬銀證 券”、“中信建投手機證券”、“聯訊證券手機炒股”等好幾個完全不同的應用。帶來的后果就是,用戶不能在手機上同時安裝這幾個應用,而且在升級過程中也容 易從一個應用升級到另一個應用上。所以,不能給好幾個孩子取同一個名字啊!
二、一款應用只應該有一個簽名
簽名文件就相當於開發者的“身份證”,我們平時生活中應該只有一張身份證,那么在手機里也一樣,簽名也應該是唯一的。而且因為簽名的加密機制,使復制和偽造簽名變得幾乎不可能,所以“豌豆洗白白”也是將簽名作為判斷是否官方版的最主要標准之一。
如 果一個應用使用了不同的簽名,那么對於用戶來說,可能會造成應用無法升級,因為 Android 系統會在升級應用的過程中比對簽名,不同的簽名無法升級。如果用戶選擇強制升級的話,因為簽名不同,所以需要先卸載舊版再安裝新版,那么之前存在本地的應 用數據、游戲記錄等也會直接丟失。
案例一
就好像我們會不小心弄丟身份證,開發者也會不小心弄丟簽名文件。我們曾遇到過四五例類似的例子,開發者找上門來說要求更換簽名,原來是因為工程師離職把簽名文件帶走了,老板要不回來了,只好把原來的簽名也全都改一遍。所以簽名文件要保管好啊!
案例二
我 們曾經統計過,網游“我叫 MT”在各大市場上一共有 48 種不同的簽名。據“我叫 MT”的開發者說,他們是通過不同的簽名來區分不同的渠道的,而一共放出過多少種簽名難以統計。這么多個不同的簽名文件,除了自己管理起來非常麻煩之外, 也給用戶的升級過程帶來了困擾,一不小心升級到了不同簽名的版本上,游戲記錄就全部丟失了。
Android 簽名機制的目的是為了檢驗應用是否被人更改過,而不是為了讓你區分渠道的。那么正常來說應該用什么方法來區分渠道呢?請看下一條。
三、使用 xml 配置文件來區分渠道
一般來說,我們在 Android manifest 文件中使用 meta-data 來區分渠道。例如:
<meta-data android:name="CHANNEL" android:value="wandoujia"/>
每次正式打包完成后,修改 android:value,再重新打包即可生成一個新的渠道包,所以:
不要再用簽名來區分渠道了!
四、正確填寫版本號在 Android 應用中,有兩個參數與版本號相關。其中,version Name 表示版本名稱,是字符串,version Code 表示版本號,是整型數字。一般來說,用戶直觀看到的是 version Name,所以這里應該填寫形似“4.15.1”這樣的版本號。而真正用來判斷新版本舊版本的參數是 version Code。在應用發布第一個版本的時候,version Code 應該填 1,然后每次發布的時候都遞增,這樣才是以規范的格式告訴各大市場你的應用的更新程度。有的開發者在 version Code 上非常隨意,這個版本發布的時候碰上結婚紀念日,於是用老婆的生日當 version Code;下個版本發布的時候運氣不太好,於是用自己的幸運數字當作 version Code……這樣在用戶看來的結果就是,明明從官網安裝了最新的 2.2.0 版本,可是各大市場卻提醒“升級到 2.1.3 版本”,越升級版本號越小了。以上四件小事,雖然都比較瑣碎,而且沒什么技術含量,但卻是很多入門的 Android 開發者容易忽略的問題。希望本文能幫助廣大開發者,在寫出好應用的同時,避免這些“坑”給應用帶來不必要的損失。
參考:http://www.apkbus.com/forum.php?mod=viewthread&tid=122037