[Mac][React Native][Android] 打包成apk

  • 860
  • 0
  • 2017-01-18

一旦把app寫好之後,最後一個步驟就是打包成apk囉

文件中會提到keytool,gradlew assembleRelease。

Android   打包APK

Android 把包成一个APK主要需要幾個步骤:

1.產生金鑰
2.將金鑰設定到這個專案的 /android/app 下的build.gradle 文件
3.產生Apk檔

我們來具體的說明明細吧

1.產生金鑰
keytool -genkey -v -keystore RyanFactoryKey.keystore -alias RyanFactoryKey-alias -keyalg RSA -keysize 2048 -validity 10000 

首先在命令視窗輸入指令,然後照著指示,填入需要的資訊

輸入金鑰儲存庫密碼:  
重新輸入新密碼: 
您的名字與姓氏為何?
  [Unknown]:  Ryan.Lu
您的組織單位名稱為何?
  [Unknown]:  Ryan.com
您的組織名稱為何?
  [Unknown]:  Ryan
您所在的城市或地區名稱為何?
  [Unknown]:  TW.Taichuang
您所在的州及省份名稱為何?
  [Unknown]:  Taichuang
此單位的兩個字母國別代碼為何?
  [Unknown]:  TW
CN=Ryan.Lu, OU=Ryan.com, O=Ryan, L=TW.Taichuang, ST=Taichuang, C=TW 正確嗎?
  [否]:  Y

針對 CN=Ryan.Lu, OU=Ryan.com, O=Ryan, L=TW.Taichuang, ST=Taichuang, C=TW 產生有效期 10,000 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)
	
輸入 <my-key-alias> 的金鑰密碼
	(RETURN 如果和金鑰儲存庫密碼相同):  
重新輸入新密碼: 
[儲存 RyanFactoryKey.keystore]

java keytool用法

Java 中的 keytool.exe 可以用來建立數位憑證,再將該憑證,綁到你的apk中。
-keystore 指定金鑰庫的名稱,我指定了RyanFactoryKey.keystore
-alias 產生別名我指定了RyanFactoryKey-alias 
要將自己的密碼記好阿!!

完成之後,就可以產生一個RyanFactoryKey.keystore檔案囉,建議將這個檔案放在你的rn專案的Android\app,與build.gradle擺在同一個目錄下。

2.將金鑰設定到這個專案的 /android/app 下的build.gradle 文件

接下來,就是要把金鑰與這個專案,產生關連,將金鑰放到設定這個專案下囉。打開你的rn專案的Android\app\build.gradle,也是剛剛步驟一將金鑰產生受,放置的同一個目錄。開始編輯build.gradle囉

signingConfigs {
        release {
            storeFile file("RyanFactoryKey.keystore")
            storePassword "123456"
            keyAlias "RyanFactoryKey-alias"
            keyPassword "123456"
        }
    }

在build.gradle的設定中,要把剛剛的產生的金鑰放入。

    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }

然後再補一下這指令。

這就完成嚕。

3.產生Apk檔

然後該專案的目錄下,執行

cd android && ./gradlew assembleRelease

就可以開始打包囉,順利的話,就可以取得apk檔案囉。

當然Ryan在過程中,也不是那麼順利,可以參考這篇,是我踩過的坑,希望有幫助到看倌阿。

排除問題的過程中,Ryan也使用了底下指令

cd android && ./gradlew compileDebug --stacktrace
cd android && ./gradlew assembleRelease --stacktrace

可以協助確認問題的點,進而排除。

以上文章由Ryan整理,若有侵犯版權、勘誤,請來信告知