Android Studio 打包Apk

Android Studio 打包

開(kāi)發(fā)完一款A(yù)pplication之后吩坝,需要對(duì)其進(jìn)行打包,才可以發(fā)布工用戶(hù)使用(release)缠诅。而Android Studio就具備了打包的工具溶浴。有一下兩種打包方式:

  • Gradle配置打包
  • Build->Generate Signed APK打包

簽名文件

在進(jìn)行打包之前,首先需要一個(gè)簽名文件管引。

eclipse的簽名文件是以.ketstore為后綴的文件戳葵;Android Studio是以.jks為后綴的文件。

簽名文件有幾個(gè)要素

英文名稱(chēng) 解釋
keyStore 密鑰庫(kù)路徑
keyStore Password 密鑰庫(kù)密碼
keyAlias 簽名文件別名
keyPassword 簽名文件密碼

默認(rèn)簽名文件

在開(kāi)發(fā)階段汉匙,用到第三方SDK新建應(yīng)用項(xiàng)目時(shí),需要簽名KEY的SHA1生蚁。這里可以使用Android Studio自帶的debug.keystore噩翠。

可以使用命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android在終端中直接獲取到簽名key的SHA1信息,如下圖:

Android Studio默認(rèn)key.png

~代表的是賬戶(hù)的根目錄

對(duì)應(yīng)要素:

要素名稱(chēng)
keystore ~/.android/debug.keystore
keyStore password android
keyAlias androiddebugkey
keyPassword android

默認(rèn)路徑下的debug.keystore不存在時(shí)邦投,會(huì)自動(dòng)創(chuàng)建伤锚。如果修改了debug.keystore路徑,并不會(huì)在新路徑下自動(dòng)創(chuàng)建debug.keystore文件志衣。如果在默認(rèn)路徑創(chuàng)建一個(gè)不以debug命名的key屯援,系統(tǒng)還是會(huì)自動(dòng)創(chuàng)建該簽名文件猛们。所以只有使用默認(rèn)路徑,才會(huì)自動(dòng)創(chuàng)建相應(yīng)的key文件

參考

Android Studio獲取調(diào)試包簽名的SHA1值方法狞洋,signing configurations(簽名配置)

創(chuàng)建簽名文件生成Apk文件

通過(guò)Build->Generate Signed APK弯淘,選擇module然后next,點(diǎn)擊creat new...選項(xiàng)創(chuàng)建一個(gè)新的key文件吉懊。如下圖填寫(xiě)一些基本信息

簽名信息.png
名稱(chēng) 描述
key store path 密鑰庫(kù)路徑
password 密鑰庫(kù)密碼
confirm 確認(rèn)密碼
alias 別名
validity 有效年限
first and last name 名字
organization unit 公司或組織
organization 公司
city or locality
state or province 市或洲
country code 國(guó)家代碼

然后點(diǎn)擊next->選擇Build Type->Finish庐橙。此時(shí)Apk文件就生成了,同時(shí)簽名文件也生成在相應(yīng)目錄借嗽。
這里注意到态鳖,已經(jīng)利用了Build->Generate Signed APK打包了Apk

參考 Android Studio 權(quán)威教程 打包恶导、生成jks密鑰浆竭、簽名Apk、多渠道打包

打包

打包有兩種方式惨寿,在介紹自定義簽名文件時(shí)邦泄,已經(jīng)實(shí)現(xiàn)了一種打包方式:Build->Generate Signed APK。那么來(lái)看看如何利用Gradle配置打包

Gradle 配置

配置簽名文件

在build.gradle(module:app)中加入下面的代碼

 signingConfigs {
        release {
            storeFile file("foolishdev.jks")
            storePassword "9445118798"
            keyAlias "foolishdev"
            keyPassword "9445118798"
        }
    }

這里要輸入的信息都是之前創(chuàng)建簽名文件時(shí)對(duì)應(yīng)的四個(gè)要素的值缤沦。

配置Build Type

buile type{
        release {
            // 不顯示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled true
            //Zipalign優(yōu)化
            zipAlignEnabled true
            // 移除無(wú)用的resource文件
            shrinkResources true
            //加載默認(rèn)混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //簽名
            signingConfig signingConfigs.release
        }
}

通過(guò)signingConfig signingConfigs.release來(lái)配置Build Type的簽名信息虎韵。可以看到這里使用了Gradle配置簽名文件時(shí)配置的Key缸废。

其實(shí)android studio中module默認(rèn)都會(huì)有debug和release兩個(gè)buildType包蓝。debug用于開(kāi)發(fā)時(shí)測(cè)試的版本,而release則是用來(lái)發(fā)布的版本企量。當(dāng)然在這里也可以配置自定義的版本测萎,并配置特有的簽名文件。在Build Variants操作框中會(huì)生成該Build Type届巩。

配置Build Variants

Build Variants.png

從上圖操作框中可以看到硅瞧,module的Build Variants中有兩個(gè)Type,分別是debug和release恕汇。其中release是剛剛配置的Build Type腕唧。可以選擇任意一個(gè)類(lèi)型進(jìn)行打包瘾英,并且他們會(huì)利用各自配置的Key進(jìn)行打包枣接。

注意到上面Build Type時(shí)并沒(méi)有配置debug type,是Android Studio默認(rèn)自帶的缺谴。其中debug type使用的就是默認(rèn)的簽名文件(debug.keystore)但惶。當(dāng)然也可以在Build Type中配置debug Type并且配置自定義的debug key

生成Apk文件

當(dāng)準(zhǔn)備工作全部完成,執(zhí)行 Run app或者Build->Build apk就會(huì)自動(dòng)在module name/app/build/outputs/apk路徑下生成Apk文件。

注意使用Build->Generate Signed APK生成Apk時(shí)膀曾,Apk文件生成目錄和創(chuàng)建的Key文件目錄相同

參考

Android tips(八)-->Android Studio打包apk县爬,aar,jar包

進(jìn)階

不在Gradle中配置password

signingConfigs { //gradle assembleRelease  
    myConfig {  
        storeFile file("stone.keystore")  
        storePassword System.console().readLine("\nKeystore password: ")  
        keyAlias "stone"  
        keyPassword System.console().readLine("\nKey password: ")  
    }  
} 

這樣在執(zhí)行g(shù)radle 命令$ gradle assembleRelease時(shí)會(huì)被要求輸入密碼

參考 Android 使用Android Studio + Gradle 或 命令行 進(jìn)行apk簽名打包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末添谊,一起剝皮案震驚了整個(gè)濱河市财喳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碉钠,老刑警劉巖纲缓,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異喊废,居然都是意外死亡祝高,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)污筷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)工闺,“玉大人,你說(shuō)我怎么就攤上這事瓣蛀÷襟。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵惋增,是天一觀的道長(zhǎng)叠殷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诈皿,這世上最難降的妖魔是什么林束? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮稽亏,結(jié)果婚禮上壶冒,老公的妹妹穿的比我還像新娘。我一直安慰自己截歉,他們只是感情好胖腾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瘪松,像睡著了一般咸作。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宵睦,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天性宏,我揣著相機(jī)與錄音,去河邊找鬼状飞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诬辈。 我是一名探鬼主播酵使,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焙糟!你這毒婦竟也來(lái)了口渔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤穿撮,失蹤者是張志新(化名)和其女友劉穎缺脉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悦穿,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攻礼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栗柒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礁扮。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞬沦,靈堂內(nèi)的尸體忽然破棺而出太伊,到底是詐尸還是另有隱情,我是刑警寧澤逛钻,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布僚焦,位于F島的核電站,受9級(jí)特大地震影響曙痘,放射性物質(zhì)發(fā)生泄漏芳悲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一屡江、第九天 我趴在偏房一處隱蔽的房頂上張望芭概。 院中可真熱鬧,春花似錦惩嘉、人聲如沸罢洲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惹苗。三九已至,卻和暖如春耸峭,著一層夾襖步出監(jiān)牢的瞬間桩蓉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工劳闹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留院究,地道東北人洽瞬。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像业汰,于是被迫代替她去往敵國(guó)和親伙窃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評(píng)論 25 707
  • 本文是轉(zhuǎn)存自 FoolishDev的Android Studio 打包Apk样漆,附傳送門(mén) 为障。 本文只為自己做個(gè)記錄,...
    Uk00閱讀 1,964評(píng)論 0 6
  • 1放祟,利用Android studio簽名打包 build->generate Signed apk 然后一步步按照...
    Aron1001閱讀 2,821評(píng)論 1 1
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)鳍怨,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,122評(píng)論 8 72
  • 基于ARP的網(wǎng)絡(luò)掃描工具netdiscover ARP是將IP地址轉(zhuǎn)化物理地址的網(wǎng)絡(luò)協(xié)議。通過(guò)該協(xié)議跪妥,可以判斷某個(gè)...
    大學(xué)霸IT達(dá)人閱讀 735評(píng)論 0 0