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