http://localhost:8081/index.android.bundle?platform=android;
當應用啟動運行的時候,會自動拉取這個bundle文件,該文件里存放的是應用的全部邏輯代碼,在目錄中并不存在這個文件,事實上,這個地址只是一個請求地址,而非真正的靜態資源文件,是通過包服務器packager通過動態分析index.android.js中的依賴,并對其進行合并得到的,而且該服務允許代碼實時渲染。
1.生成一個簽名密鑰
~~~
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
~~~
如果說不是內部命令,請配置環境變量
~~~
C:\Program Files\Java\jdk1.8.0_31\bin;
~~~
最后它會生成一個叫做my-release-key.keystore的密鑰庫文件
2.找到路徑/android/app/src/main,并在該目錄下新建assets文件夾
3.在工程目錄下將index.android.bundle下載并保存到assets資源文件夾中
~~~
curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle
~~~
這句命令是重點,如果assets目錄中不存在該文件,則打包的apk在執行時顯示空白。
Protocol 'http not supported or disabled in libcurl
Windows下安裝使用curl命令:
https://curl.haxx.se/download/?C=M;O=D
4.添加gradle的android keystore配置
打包的apk在未簽名的情況下,在手機中(非root)是不允許安裝的
在build.gradle文件中
~~~
//簽名
signingConfigs{
release {
storeFile file("/my-release-key.keystore")
storePassword "密碼"
keyAlias "keyAlias的名字"
keyPassword "密碼"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release //添加這句話引用簽名配置
}
}
~~~
5.啟用Proguard代碼混淆來縮小APK文件的大小
Proguard是一個Java字節碼混淆壓縮工具,它可以移除掉React Native Java(和它的依賴庫中)中沒有被使用到的部分,最終有效的減少APK的大小。
重要:啟用Proguard之后,你必須再次全面地測試你的應用。Proguard有時候需要為你引入的每個原生庫做一些額外的配置。參見app/proguard-rules.pro文件。
~~~
// 搜索enableProguardInReleaseBuilds將值改為true
def enableProguardInReleaseBuilds = true
~~~
6.在/android/目錄中執行gradle assembleRelease命令,打包后的文件在 android/app/build/outputs/apk目錄中,例如app-release.apk。如果打包碰到問題可以先執行 gradle clean 清理一下。
安裝gradle工具(版本與android\gradle\wrapper下的一致),并配置環境變量,配置GRADLE_HOME到你的gradle根目錄當中,然后把%GRADLE_HOME%/bin(linux或mac的是$GRADLE_HOME/bin)加到PATH的環境變量。
配置完成之后,運行gradle -v,檢查一下是否安裝無誤
7.將apk發布到各大應用市場(BUILD SUCCESSFUL)