參考地址:React native Android 命令 打包apk
首先:嘗試使用模擬器測試
這里是因為需要確認目前在電腦上的模擬器是可以正常運行的,並且,開發React native的應用程序,肯定是需要做一些本地測試的
第一:生成簽名密鑰
這一步的操作主要是生成需要的簽名密鑰,供android調用,生成的文件待用
在項目根目錄運行以下命令,輸入的密碼是比較簡單的1234567890
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
第二:設置gradle
分兩步:
第一步:配置全局的gradle變量
打開C:\Users\chenwes\應該是可以看到一個文件夾.gradle,打開后,應該也有一個文件gradle.properties,如果不存在該文件,可以手動創建,並在該文件中輸入以下內容
TEST_RELEASE_STORE_FILE=my-release-key.keystore
TEST_RELEASE_KEY_ALIAS=my-key-alias
TEST_RELEASE_STORE_PASSWORD=1234567890
TEST_RELEASE_KEY_PASSWORD=1234567890
第二步:給項目添加簽名
將剛才生成的簽名文件my-release-key.keystore復制至react native項目中的android\app文件夾中
並手動編輯android\app文件夾下的build.gradle文件,
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file (TEST_RELEASE_STORE_FILE)
storePassword TEST_RELEASE_STORE_PASSWORD
keyAlias TEST_RELEASE_KEY_ALIAS
keyPassword TEST_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
以下是我本地修改過的build.gradle的文件
第三步:生成APK
第一次沒有成功,
在項目的根目錄,運行命令
cd android #如果你已經在anroid目錄,則不需要該命令
gradlew assembleRelease
以下這種方法適合對於,在項目的android/app下有一個react.gradle文件的情況,但我的沒有,馬上進行第二次嘗試
第二次嘗試:
因為在我的電腦中,在項目的android/app下沒有react.gradle文件,需要按以下流程來處理
1:到D:\test\TestAndroidApk\android\app\src\main,創建一個assets的空文件夾
2:打開命令窗口,定位到項目的根目錄,運行命令,運行完成后,應該可以在項目目錄下的D:\test\TestAndroidApk\android\app\src\main\assets看到兩個文件,即index.bundle和index.bundle.meta兩個文件,生成的這兩個文件,會打包至APK中。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
#這里注意一下參數--entry-file index.js 因為React Native以前的版本會生成兩個文件,現在的版本0.52.0已經變成只有一個文件,這里需要注意,參考別人的文章時需要注意。
3:命令窗口進入至android目錄,運行命令
gradlew assembleRelease
4:最后需要清理,運行命令
gradlew clean
在生成APK時,如果遇到錯誤,不要慌,先仔細對一下各項參數是否都可以對應到
1:在生成簽名文件時,四個參數是否與C:\Users\chenwes\.gradle文件夾中的gradle.properties設置的四個參數是不是一致。
2:C:\Users\chenwes\.gradle文件夾中的gradle.properties設置的四個參數要與 D:\test\TestAndroidApk\android\app文件夾中的build.gradle中的signingConfigs =》 release節點中的一致(gradle.properties設置的真實的值,且是全局的,build.gradle的是一個引用值)
3:D:\test\TestAndroidApk\android\app文件夾中的build.gradle中的buildTypes =》 release是不是加入了signingConfig signingConfigs.release
簡單的步驟總結:
生成APK 1.生成tqstablet.keystore文件,並復制到~\tqs-tablet\android\app文件夾 keytool -genkey -v -keystore tqstablet.keystore -alias tqstablet -keyalg RSA -keysize 2048 -validity 10000 2.gradle全局文件(不存在則新增) C:\Users\chenwes\.gradle增加內容 TQSTABLET_RELEASE_STORE_FILE=tqstablet.keystore TQSTABLET_RELEASE_STORE_PASSWORD=****** TQSTABLET_RELEASE_KEY_ALIAS=tqstablet TQSTABLET_RELEASE_KEY_PASSWORD=****** 3.~\tqs-tablet\android\app\src\main創建assets空文件夾 4.在根目錄執行react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 應該會在~\tqs-tablet\android\app\src\main\assets生成index.android.bundle和index.android.bundle.meta 5.在根目錄的android文件夾執行gradlew assembleRelease ~\tqs-tablet\android\app\build\outputs\apk生成APK完成 6.在根目錄的android文件夾執行gradlew clean清空
在模擬器使用生成的APK