注意:如下全部操做都在win7下進行,React Native版本0.54.0
react
在Windows上keytool命令放在JDK的bin目錄中(好比默認安裝路徑C:Program FilesJavajdkx.x.x_xbin裏面,或者搜索keytool.exe
所在文件夾)
在命令行中輸入如下命令keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
android
這條命令會要求你輸入密鑰庫(keystore)和對應密鑰的密碼,而後設置一些發行相關的信息。所有填寫後,會問你是否正確,按下y和回車便可。該密鑰有效期爲10000天。--alias參數後面的別名是你未來爲應用簽名時所須要用到的,因此記得記錄這個別名。
windows
最後它會在同級目錄裏生成一個my-release-key.keystore的密鑰庫文件。app
把剛纔生成的my-release-key.keystore文件複製到你項目中的android/app文件夾裏面
而後打開android/app
裏的build.gradle
文件,添加以下的簽名配置(應該在109行處下方添加)。密碼與別名請修改爲你本身的gradle
... android { ... defaultConfig { ... } signingConfigs { release { storeFile file("my-release-key.keystore") storePassword "密碼" keyAlias "keyAlias的名字" keyPassword "密碼" } } buildTypes { release { ... signingConfig signingConfigs.release } } } ...
將命令行裏的目錄切換到你項目下的android目錄裏,而後執行gradlew assembleRelease
開始打包編譯(若在windows的PowerShell環境中,請使用gradlew ./assembleRelease
命令)ui
我這邊執行了4分鐘後,顯示BUILD SUCCESSspa
apk文件在哪裏?在android\app\build\outputs\apk
目錄裏有打包好的apk 任務完成~.net
react native打包出現unable to process incoming event 'ProcessComplete' <ProgressCompleteEvent>
出現這種狀況是由於代碼混淆異常,分析問題後發現in library class Android.text.StaticLayout,因此在混淆文件中加入:(混淆文件在android\app\proguard-rules.pro
)命令行
-keep class android.text {* ;} -dontwarn android.text.*
若是還不行,能夠試試下方打包命令
打包命令:gradlew.bat assembleRelease --console plain
3d
解決Could not find method android() for arguments問題
方法http://blog.csdn.net/xiaoshit...
(android/app裏的build.gradle文件)
其餘常見問題集
https://www.jianshu.com/p/98c...
若是你須要對apk進行混淆打包
編輯android/app/build.gradle
參考資料http://blog.csdn.net/fengyuzh...
def enableProguardInReleaseBuilds = true