將應(yīng)用發(fā)布到應(yīng)用商店(一)----生成正式簽名的APK文件

一:使用Android Studio生成APK

1. 點(diǎn)擊Android Studio導(dǎo)航欄上的Build-->Generate Signrd APK,會(huì)彈出如下圖所示創(chuàng)建簽名APK對(duì)話框

創(chuàng)建簽名對(duì)話框

2.由于我們還沒有一個(gè)正式的KeyStore文件,我們應(yīng)該點(diǎn)擊Create New按鈕,然后會(huì)彈出一個(gè)新的對(duì)話框讓我們來填寫創(chuàng)建keystore文件所需要的信息,根據(jù)實(shí)際情況填寫就行,如下圖所示

填寫keystore文件信息
注意,在Validity那一欄填寫的是keystore文件的有效時(shí)長,單位是年,這里我填寫的是30年,然后點(diǎn)擊確定按鈕

3.記住點(diǎn)擊Remember password,這樣下一次就不用填寫密碼了

信息自動(dòng)填寫完整
填寫剛剛的密碼
選擇APK文件的輸出地址

4.點(diǎn)擊Finish按鈕,這里默認(rèn)將APK文件生成在項(xiàng)目app的根路徑下,稍等一段時(shí)間,APK文件就會(huì)生成好了,并在右上角彈出一個(gè)如下圖所示的彈出框,點(diǎn)擊Show in Explorer可以查看生成的APK文件

提示APK文件生成成功

APK路徑

二:使用grade生成APK

1.編輯app/build.grade文件,在android閉包中添加如下內(nèi)容

Paste_Image.png

在這里我們?cè)赼ndroid閉包里面添加了一個(gè)signingConfigs閉包,又在signingConfigs閉包里添加了一個(gè)config閉包,在config閉包里面有我們keystore文件的各種信息

  • storeFile file:指定keystore文件的位置,在這里引用的是相對(duì)地址
  • storePassword:指定密碼
  • keyAlias:指定別名
  • keyPassword:指定別名密碼
將簽名文件配置好之后,接下來只需要在生成正式版APK的時(shí)候去應(yīng)用這個(gè)配置就可以了,繼續(xù)編輯app/build.grade文件
這里我們?cè)赽uildTypes下的release閉包下應(yīng)用剛才的簽名配置,這樣在生成正式版APK的時(shí)候就會(huì)自動(dòng)使用我們剛才配置的簽名信息來進(jìn)行簽名了

2.現(xiàn)在build.grade文件已經(jīng)配置完成,那么我們?nèi)绾尾拍苌葾PK文件?

其實(shí)在Android Studio中內(nèi)置了很多的Grade Tasks,其中就包括生成APK的Task,點(diǎn)擊右側(cè)工具欄的Grade-->項(xiàng)目名-->:app-->Tasks-->Build
查看內(nèi)置Grade Tasks
其中assembleDebug用于生成測試版的APK文件,assembleRelease用于生成正式版的APK文件,assemble用于同時(shí)生成測試版和正式版的APK文件。
在生成APK文件之前,先要雙擊clean這個(gè)Task來清理一下當(dāng)前項(xiàng)目,然后雙擊assembleRelease,運(yùn)行完之后APK文件會(huì)自動(dòng)生成在app/build/outputs/apk目錄下
生成的APK文件

3,注意:這里雖然生成了APK文件,不過還有一個(gè)細(xì)節(jié)需要大家注意一下,目前keystore文件的所有信息都是已明文的形式直接配置在build.grade文件中,這樣就不太安全,Android推薦的做法是將這類敏感數(shù)據(jù)配置在一個(gè)獨(dú)立的文件里,然后再在build.grade里面讀取這些數(shù)據(jù)

在Android Studio項(xiàng)目的根目錄下有一個(gè)grade.properties文件,它是專門用來配置全局鍵值對(duì)數(shù)據(jù)的,我們?cè)趃rade.properties文件中添加如下數(shù)據(jù)

<code>
KEY_PATH=android.jks
KEY_PASS=111111
ALIAS_NAME=lilei
ALIAS_PASS=111111
</code>

然后我們?cè)赽uild.grade文件里去讀取這些數(shù)據(jù)
這樣直接查看build.grade文件就無法看到keystore文件的具體信息,只有查看grade.properties文件才能看到,我們只需要保護(hù)好grade.properties文件就行了,比如將它從Git版本控制中刪除。這樣grade.properties文件就只會(huì)保留在本地,從而就不用擔(dān)心keystore文件的信息會(huì)泄露了

三:生成多渠道APK文件

因?yàn)槟壳皣鴥?nèi)應(yīng)用市場琳瑯滿目,不像蘋果只有一個(gè)AppStore,當(dāng)然我們也可以使用同一個(gè)APK文件來上架不同的應(yīng)用商店,但是如果有一些特殊要求的話,比如針對(duì)不同的應(yīng)用商店渠道來定制不同的頁面
Android Studio提供了一種非常簡單的方法來解決這種差異性需求,極大地解決了之前版本維護(hù)的問題,比如我們準(zhǔn)備生成360和百度兩個(gè)渠道的APK文件,修改app/build.grade文件
可以看到,我們?cè)谶@里添加了一個(gè)productFlavors閉包,然后在閉包中添加所有的渠道配置就可以了,注意,Grade中的配置規(guī)定,不能以數(shù)字開頭,這里我們就用了qihoo來代替360的渠道配置。
渠道名的閉包中可以覆寫defaultConfig中的任意一個(gè)屬性,這里將applicationId進(jìn)行了覆寫,這樣最終生成的各渠道APK文件的包名也就不同
接下來我們針對(duì)不同渠道來編寫差異性需求,在app/src目錄下(main的平級(jí)目錄),新建一個(gè)百度目錄,然后在百度目錄下再新建Java和res這兩個(gè)目錄,如下圖所示
創(chuàng)建渠道專屬目錄
這樣我們就可以在這里編寫百度渠道特有的功能了,java目錄用于存放代碼,res目錄來存放資源,如果需要覆寫AndroidManifest文件里的內(nèi)容,還可以在百度目錄下新建一個(gè)AndroidManifest.xml文件,實(shí)際上我們也沒有什么差異性需求,因此我們就在這里給不同的APK取一個(gè)不同的應(yīng)用名吧
百度文件名
360文件名
我們就以這樣一個(gè)簡單的案例來實(shí)現(xiàn)渠道差異性需求,接下來生成多渠道APK包,打開右側(cè)的Grade Tasks列表,你會(huì)發(fā)現(xiàn)里面多出了幾個(gè)新的Task,如下圖所示
查看新的Task
如果只想生成百度的APK,就執(zhí)行assembleBaidu,如果只想生成360的APK,就執(zhí)行assembleQihoo,如果想一次性生成所有APK的渠道包,就執(zhí)行assembleRelease
除了使用grade的方式生成之外,使用Android Studio的可視化工具也是能生成多渠道的APK文件的,如下圖所示
使用可視化工具生成多渠道包
這里可以按住Ctrl來選擇要生成的包
最后我們會(huì)生成兩個(gè)不同的APK包,并且他們都可以安裝在手機(jī)上,因?yàn)槲覀冎案矊懥烁髑赖腶pplicationId屬性,包名會(huì)不同
不同渠道的APP
最后再寫一個(gè)指定我們r(jià)elease包的輸出名字就是我們的渠道名字,在buildTypes下的release閉包中寫上如下代碼
指定我們r(jià)elease包的輸出名字就是我們的渠道名字
生成的APK如下
APK名字
好了,今天的代碼就先寫到這吧?。?!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,155評(píng)論 3 425
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,635評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,255評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,646評(píng)論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,838評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,399評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,146評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,338評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,565評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評(píng)論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,059評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,296評(píng)論 2 376

推薦閱讀更多精彩內(nèi)容