flutter筆記5:官方資料搬運-安卓客戶端打包

上一篇,使用material原生控件完成了人生的一個用flutter開發(fā)的APP,這兩天為了理解flutter,翻了很多資料,信息量太大,燒了不少腦子,今天這篇就簡單點,實戰(zhàn)走一下安卓客戶端的打包流程,看看會遇到什么問題。想查看官方資料的請移步Preparing an Android App for Release。

第一步

首先,你需要找到這幾個路徑下的文件,并配置其中的幾個參數(shù):

配置APP圖標

  • 項目目錄/android/app/src/main/res/
    進入這個路徑后,會看到很多個以mipmap-為前綴命名的文件夾,文件夾名稱的后綴是對應(yīng)的APP圖標像素密度:

mdpi(中)~160dpi
hdpi(高)~240dpi
xhdpi(超高)~320dpi
xxhdpi(超超高)~480dpi
xxxhdpi(超超超高)~640dpi

將對應(yīng)像素密度的圖片放入對應(yīng)的文件夾中,圖片記得用png格式,安裝的APP會根據(jù)對應(yīng)的屏幕像素密度使用適應(yīng)尺寸的圖標,但要注意,APP圖標文件最好統(tǒng)一使用同一個名字,方便后面配置。

配置APP名稱、圖標和系統(tǒng)權(quán)限

  • 項目目錄/android/app/src/main/AndroidManifest.xml

application標簽內(nèi)部:

android:label="myflutter"   //此屬性為你的APP安裝到手機上顯示的名稱,支持中文,所以取名的時候請浪一點~
android:icon="@mipmap/ic_test"  //此屬性為APP圖標用到的圖片文件名稱
//這里圖片文件不需要輸入文件格式后綴,前面說過的要使用相同文件名,因為這里并沒有按像素密度分別配置對應(yīng)的圖片文件

uses-permission標簽,此標簽定義APP的系統(tǒng)權(quán)限,比如打開麥克風(fēng)攝像頭啦、獲取聯(lián)系人號碼簿啦、是否允許上網(wǎng)等等等,權(quán)限有很多,具體請參考翻墻官網(wǎng)。在這里,默認配置了一個android:name="android.permission.INTERNET"的權(quán)限,意思是允許手機聯(lián)網(wǎng),因為flutter和APP交換數(shù)據(jù)需要用到這個權(quán)限。

第二步

APP注冊

生成keystore

官方寫的很簡單,終端下輸入命令即可獲?。?/p>

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

然而實際上的效果是:


找不到keytool

然后官方note了一下,說可能會因為找不到keytool而報錯,叫我們輸入flutter doctor命令,從結(jié)果的Java binary at:中找到keytool.exe文件路徑再執(zhí)行上面的命令,然而我使用了N次flutter doctor也沒找到Java binary at:

找不到Java binary at:

正確的打開方式是輸入下面這個命令:

flutter doctor -v

然后你看到的結(jié)果是:


找到Java binary at:

啊喂~那個官方文檔是不是忘了更新啦。

然后我們復(fù)制上圖中的路徑,輸入這個命令:

E:\Applications\AndroidStudio\jre\bin\keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

注意,把路徑中最后的java替換成keytool。

這時候會彈出一堆問詢,小伙伴們按要求填寫即可:


生成KEY失敗

但是按要求操作的小伙伴并不能如愿以償?shù)玫浇Y(jié)果,由于當(dāng)前的目錄下沒有寫的權(quán)限,所以要找一個有寫入權(quán)限的路徑放置生成的KEY,于是上面的命令變成了:

E:\Applications\AndroidStudio\jre\bin\keytool -genkey -v -keystore /E:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

注意看~/key.jks改成了/E:/key.jks,于是乎:

成功生成KEY

然后到E盤根目錄下可以發(fā)現(xiàn)多了一個key.jks文件,記住:不要把這個jks文件共享給任何人?。〔灰堰@個jks文件共享給任何人??!不要把這個jks文件共享給任何人!!尤其是只圖方便把源碼一股腦簽入github的XX,如果是為公司做的APP,后果自己想~。

這時候到項目目錄的android文件夾下創(chuàng)建一個名為key.properties的文件,并打開貼入以下代碼:

storePassword=<password from previous step>    //輸入上一步創(chuàng)建KEY時輸入的 密鑰庫 密碼
keyPassword=<password from previous step>    //輸入上一步創(chuàng)建KEY時輸入的 密鑰 密碼
keyAlias=key
storeFile=<E:/key.jks>    //key.jks的存放路徑

這個key.properties文件也不要共享出去?。?/p>

配置key注冊

進入項目目錄的/android/app/build.gradle文件,在android {這一行前面,加入如下代碼:

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

把如下代碼:

buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}

替換成:

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

defaultConfig中,錄入APPID和版本號,版本號命名控制參考翻墻吧你少年

defaultConfig {
        applicationId "com.example.myflutter"  //APPID
        minSdkVersion 16  //可運行應(yīng)用的最低版本的 Android 平臺,由該平臺的 API 級別標識符指定
        targetSdkVersion 27  //指定運行應(yīng)用的目標 API 級別。在某些情況下,這允許應(yīng)用使用在目標 API 級別中定義的清單元素或行為,而不是僅限于使用那些針對最低 API 級別定義的元素或行為。
        versionCode 1    //內(nèi)部版本號
        versionName "1.0"  //對外公布的版本號
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

第三步

編譯生成apk文件

到終端中輸入如下命令:

flutter build apk

耐心等待執(zhí)行完畢后你會看到:


生成apk

然后到圖中標識的路徑下,找到生成apk文件,即打包完成了,你也可以在終端輸入命令安裝APP:

flutter install

安裝時,會把原來調(diào)試運行安裝的APP卸載掉,重新安裝新的APP:


安裝APP

然后看手機上:


APP安裝完畢

O了,今天的搬運到此完畢,走過一遍流程下來發(fā)現(xiàn)官網(wǎng)文檔可能沒及時更新,導(dǎo)致我踩了幾個坑,不過總體來說還比較簡單,大家可以自己搞搞試試,就到這里,補瞌睡去~
flutter 中文社區(qū)(官方QQ群:338252156)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 服務(wù)器https配置 配置https操作說明文檔 1、查看服務(wù)器環(huán)境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 9,255評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • >node的版本要求大于6 >npm install -g cordova ionic ## Build Setu...
    Peter2021閱讀 1,054評論 0 2
  • 考了兩年,走過很多彎路,有學(xué)弟學(xué)妹來問經(jīng)驗,所以就寫一份文字版的吧。 【英語】 英語是刷人的科目,很多人專業(yè)課、政...
    溫竹梅閱讀 632評論 9 13

友情鏈接更多精彩內(nèi)容