在今天的文章中,我們將重點(diǎn)探討通過Google Play軟件商店進(jìn)行應(yīng)用程序發(fā)布,不過如果愿意,大家也可以選擇其它一些發(fā)布途徑。要通過Google Play商店進(jìn)行應(yīng)用程序發(fā)布,我們需要注意一些必要條件;不過如果通過其它途徑發(fā)布則有可能無需考慮這些前提。但我個(gè)人建議大家認(rèn)真了解這些內(nèi)容,并盡可能在任何發(fā)布方式當(dāng)中都嚴(yán)格貫徹這些最佳實(shí)踐方案。
在我們考慮發(fā)布一款應(yīng)用程序之前,首先要完成的就是全面的調(diào)試與測試工作,其中包括確保應(yīng)用能夠在各類不同配置的設(shè)備上正常運(yùn)行。此外,大家還應(yīng)該注意其它一些前提性事項(xiàng)。首先,如果我們的Java代碼當(dāng)中包含任何日志聲明或者其它用于輸出調(diào)試信息的調(diào)用內(nèi)容,請務(wù)必在發(fā)布之前將其從應(yīng)用內(nèi)移除。
如果大家的清單文件當(dāng)中包含android:debuggable屬性集,則需要在發(fā)布應(yīng)用程序之前將其移除。我們的清單版本屬性還需要經(jīng)過合理配置,我將在后續(xù)內(nèi)容中進(jìn)一步解釋該話題。大家要確保自己的應(yīng)用程序資源正確包含在軟件包文件夾里,例如drawables等指向配置信息的媒體條目。如果大家的應(yīng)用程序需要使用數(shù)據(jù)庫之類資源,則必須確保其經(jīng)過合理調(diào)整。
如果大家的應(yīng)用程序在運(yùn)行中需要使用某種程度的權(quán)限,則必須在manifest當(dāng)中利用uses-permission元素將其添加進(jìn)來。為了順利實(shí)現(xiàn)應(yīng)用發(fā)布,大家還需要在manifest應(yīng)用程序元素中設(shè)置應(yīng)用圖標(biāo)以及標(biāo)簽屬性。我們在清單當(dāng)中列出的大部分條目都將與Google Play軟件商店的應(yīng)用列表內(nèi)容相對應(yīng)。
我們在之前的文章當(dāng)中已經(jīng)提到過,大家需要為自己的應(yīng)用程序設(shè)置一個(gè)版本號并為其命名。說起版本號,這部分信息應(yīng)該被包含在根manifest元素中manifest下的android:versionCode與android:versionName屬性當(dāng)中。
其中versionCode屬性應(yīng)該為一個(gè)整數(shù),且每一個(gè)應(yīng)用程序新版本分配到的數(shù)字都需要比前一個(gè)更大。從邏輯角度講,大家應(yīng)該以1為初始版本號,并在每一次推出新版本時(shí)逐漸遞增該數(shù)值;不過大家也可以隨意選擇自己想要的數(shù)字,只要比上一個(gè)版本數(shù)值更大即可。終端用戶無法看到應(yīng)用程序的版本代碼值,該數(shù)值僅用于在發(fā)布過程中衡量應(yīng)用程序的當(dāng)前版本號是否比原先已經(jīng)安裝的版本更新。
不過versionName屬性則不同,它是一個(gè)可被終端用戶查看的字符串。版本名稱并不需要一定與版本代碼相匹配,但從邏輯上講其同樣應(yīng)該遵循遞進(jìn)關(guān)系。舉例來說,從1.0開始,接下來應(yīng)該是1.1,當(dāng)我們發(fā)布的新內(nèi)容更新幅度較大時(shí)則將其提升為2.0。換句話來說,版本名稱應(yīng)該能夠幫助終端用戶理解應(yīng)用版本的先后順序。如果大家有計(jì)劃為自己的應(yīng)用程序發(fā)布多個(gè)版本,則最好花點(diǎn)時(shí)間來考慮怎樣的版本名稱最適合反映自己的升級進(jìn)程。
第一步
要在Android系統(tǒng)上安裝一款應(yīng)用程序,該應(yīng)用必須利用具備私有密鑰的證書進(jìn)行簽名驗(yàn)證。在我們的開發(fā)過程中,Eclipse與Android SDK會(huì)自動(dòng)利用調(diào)試密鑰完成應(yīng)用程序的簽名過程,但大家無法通過這個(gè)調(diào)試密鑰進(jìn)行應(yīng)用程序發(fā)布。在Android應(yīng)用程序的創(chuàng)建過程中,系統(tǒng)會(huì)選擇debug或者release兩種模式之一進(jìn)行創(chuàng)建。在release模式下,大家需要利用自己的私有密鑰完成應(yīng)用程序簽名。
大家也可以利用keytool程序為自己的應(yīng)用程序生成一個(gè)密鑰,我們可以在Java Development Kit(或者簡稱為JDK)當(dāng)中找到該程序。各位可以 點(diǎn)擊此處 查看keytool說明文檔以了解更多詳細(xì)情況。在為我們的私有密鑰創(chuàng)建了keystore之后,大家即可選擇alias name以及password,從而在日后進(jìn)行應(yīng)用程序簽名時(shí)加以使用。
第二步
當(dāng)我們已經(jīng)準(zhǔn)備好了應(yīng)用程序簽名所必需的key/keystore之后,正面要做的就是為其創(chuàng)建一個(gè)發(fā)布版本。在Eclipse當(dāng)中,通過Package Explorer選中自己的應(yīng)用程序項(xiàng)目,右鍵點(diǎn)擊該項(xiàng)目或者選擇“File”、“Export”。展開其Android文件夾后,選擇“Export Android Application”并點(diǎn)擊“Next”。
接下來,Eclipse將突出顯示創(chuàng)建過程中所遇到的全部錯(cuò)誤信息,我們需要將其一一解決才能繼續(xù)進(jìn)行下一步。如果整個(gè)過程沒有出現(xiàn)錯(cuò)誤,大家可以直接點(diǎn)擊“Next”以繼續(xù)。在Keystore Selection容器中,瀏覽至我們的keystore文件并為其輸入密碼。接下來,從菜單中選擇我們?yōu)槊荑€指定的alias并輸入自己設(shè)定的密碼內(nèi)容。當(dāng)一切準(zhǔn)備就緒之后,點(diǎn)擊“Next”進(jìn)入下一步。
選擇一個(gè)位置并為我們應(yīng)用程序的APK文件指定一個(gè)名稱。該APK文件也就是我們將要上傳到Google Play商店中的文件,用戶在安裝過程中需要將其下載到自己的設(shè)備上并加以運(yùn)行。Eclipse會(huì)利用正確的密鑰與驗(yàn)證機(jī)制處理應(yīng)用程序簽名。在點(diǎn)擊“Finish”之后,該APK文件就會(huì)出現(xiàn)在大家所選定的保存位置?,F(xiàn)在我們應(yīng)該已經(jīng)可以將該APK文件復(fù)制到Android設(shè)備上了。在復(fù)制工作完成之后,利用文件管理器應(yīng)用選擇該APK文件,并依據(jù)說明進(jìn)行安裝。只要應(yīng)用程序簽名一切正常,則系統(tǒng)應(yīng)該能夠順利安裝該應(yīng)用、供大家在設(shè)備上運(yùn)行所發(fā)布版本的應(yīng)用程序了。
請確保我們的發(fā)布密鑰受到嚴(yán)格保護(hù),因?yàn)橹挥惺褂猛惶酌荑€、大家才能在為同一軟件包發(fā)布更新內(nèi)容。如果大家利用其它不同的驗(yàn)證機(jī)制處理應(yīng)用程序的更新版本,則必須使用與原先不同的軟件包名稱。
提示:在發(fā)布特定應(yīng)用程序時(shí),大家可能需要執(zhí)行額外一些步驟。舉例來說,需要利用谷歌地圖庫的應(yīng)用程序要求我們?yōu)镸aps API設(shè)定一個(gè)專門的發(fā)布密鑰。
在我們創(chuàng)建好了一個(gè)完整版APK文件之后,接下來要做的就是將應(yīng)用程序發(fā)布到Google Play軟件商店當(dāng)中。除了應(yīng)用程序本身,我們還需要為發(fā)布過程準(zhǔn)備一些額外資源——其中一部分最好能提前準(zhǔn)備就緒。首先,應(yīng)用程序的銷售宣傳圖片以及功能描述是必不可少的,大家需要將這部分信息添加到應(yīng)用程序的列表當(dāng)中。我們還需要為應(yīng)用程序在軟件商店中的介紹與下載界面設(shè)計(jì)說明內(nèi)容,其中包括應(yīng)用程序的定價(jià)(如果這是一款收費(fèi)應(yīng)用的話)、應(yīng)用程序的內(nèi)購項(xiàng)目以及語言設(shè)定等等。
要著手進(jìn)行發(fā)布流程,我們首先需要登錄自己的谷歌賬戶并導(dǎo)航至Developer Console。點(diǎn)擊“Add New Application”并在彈出的窗口中選擇自己應(yīng)用程序的默認(rèn)語言、輸入應(yīng)用程序名稱。從這里開始,大家就要用到之前準(zhǔn)備好的應(yīng)用程序清單并上傳我們剛剛創(chuàng)建好的APK文件。
相信大家已經(jīng)注意到了,我們應(yīng)用程序的Google Play清單會(huì)要求填寫大量細(xì)節(jié)信息,而且整個(gè)發(fā)布過程也需要一定時(shí)間。在每款應(yīng)用的主清單部分,大家可以添加一部分圖形內(nèi)容——例如應(yīng)用圖標(biāo)、應(yīng)用截圖、視頻介紹、應(yīng)用程序描述、功能類別、內(nèi)容評級以及開發(fā)者的聯(lián)系方式等。如果各位對這些信息在Google Play中的顯示效果還沒啥概念,請直接參照商店中其它已經(jīng)擺上貨架的其它應(yīng)用程序。
在應(yīng)用程序清單中的Pricing and Distribution部分,大家需要指定自己的應(yīng)用是否需要收費(fèi)或者可以免費(fèi)提供給用戶。請注意,免費(fèi)應(yīng)用程序無法被重新修改為收費(fèi)應(yīng)用。不過大家可以修改收費(fèi)應(yīng)用的價(jià)格或者將收費(fèi)應(yīng)用修改為免費(fèi)。我們也可以在免費(fèi)應(yīng)用當(dāng)中設(shè)置內(nèi)購機(jī)制。如果大家的應(yīng)用程序適用于多個(gè)國家,Google Play會(huì)自動(dòng)將我們設(shè)定的價(jià)格換算為其它貨幣單位。請大家花點(diǎn)時(shí)間仔細(xì)查看應(yīng)用程序清單當(dāng)中的其它內(nèi)容,例如應(yīng)用內(nèi)產(chǎn)品以及API等。
如果大家已經(jīng)在Google Play上發(fā)布一個(gè)或者多個(gè)應(yīng)用程序,則可以在Developer Console當(dāng)中查看各應(yīng)用的當(dāng)前狀態(tài)。這套控制臺為開發(fā)人員提供了非常詳盡的報(bào)告內(nèi)容。我們可以對清單的統(tǒng)計(jì)部分進(jìn)行配置,從而更準(zhǔn)確地把握其Android版本、應(yīng)用版本、國家、設(shè)備以及語言設(shè)定的運(yùn)作情況。其它統(tǒng)計(jì)內(nèi)容還包括安裝與營收報(bào)告、詳細(xì)的崩潰情況報(bào)告、評分以及用戶評論等。相比之下,蘋果的App Store還允許開發(fā)人員回復(fù)用戶評價(jià)并直接與應(yīng)用程序用戶進(jìn)行對話。當(dāng)應(yīng)用程序被擺上Google Play商店的貨架之后,大家就可以通過分享應(yīng)用清單的鏈接來達(dá)到宣傳的目的。
最后,在著手進(jìn)行應(yīng)用程序發(fā)布流程之后,請認(rèn)真閱讀 Launch Checklist 中的內(nèi)容。
如果大家剛剛開始接觸Android平臺,那么離發(fā)布自己的第一款應(yīng)用恐怕還有很多長的路要走。不過了解整個(gè)發(fā)布流程對于新手開發(fā)者來說仍然非常重要。應(yīng)用程序的首次發(fā)布可能需要花上不少時(shí)間,但一旦填寫了初始信息及描述之后,未來的更新上傳將變得很快。在本系列教程的下一部分,我們將為大家提供一些進(jìn)一步學(xué)習(xí)Android開發(fā)的建議性方向。最后,我們將共同面對一次小小的結(jié)業(yè)考試——通過試題驗(yàn)證大家是否已經(jīng)真正掌握了到目前為止介紹過的知識。
更多建議: