create-react-native-app 運行npm run eject
后根目錄會產生一個andriod目錄和ios目錄。里面就是運行打包的配置文件。
如果你是用react-native-cli 開發RN的應該一開始就有這倆目錄。
比如 android 目錄里面會有build.gradle,gradle.properties 等
簡單說 gradle 是一個依賴管理/自動化編譯測試部署打包工具。
首先生成簽名key
.\keytool.exe -genkey -v -keystore D:/my-release-key.keystore -alias my-key-a lias -keyalg RSA -keysize 2048 -validity 10000
有個小坑是生成key的路徑是D盤,因為在當前C盤生成的話在windows下可能會有權限問題。
image.png
然后按照這個 教程,改動一些配置文件。
修改相關配置文件
在根目錄的android目錄下執行 ./gradlew assembleRelease
后面就踩了很多坑,大多數版本問題。
比如java jdk從最新的9改為了8
gradle版本改為了最新的4.3
還報了一些缺少npm包的錯誤,直接npm install缺哪個裝哪個就行了。
具體的見下面的文件改動
android/build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
/*
這里之前是 2.2.3
卡在這里半天,老是報 com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDependencyCacheDir(Ljava/io/File;)V
*/
classpath 'com.android.tools.build:gradle:2.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
android/app/build.gradle
android {
// 這里之前是
// compileSdkVersion 23
// buildToolsVersion "23.0.1
compileSdkVersion 25
buildToolsVersion "25.0.1"
...
android\gradle\wrapper
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip
執行最后的打包命令 ./gradlew assembleRelease
切換到android目錄 打包成功畫面
image.png
注意事項:打包過程會占用大量內存,把WebStorm等大的程序關掉。