打包共5个步骤

1.在终端里面,cd 到项目的根目录后.执行下面这行命令:

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

2.执行第一步会在根目录下会生成一个XXXXXX.keystore的文件,直接拿到android/app下.

3.在android/gradle.properties中加入(******换为你刚才输入的口令.):

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore

MYAPP_RELEASE_KEY_ALIAS=my-key-alias

MYAPP_RELEASE_STORE_PASSWORD=******

MYAPP_RELEASE_KEY_PASSWORD=******

 

4.在android/app/build.gradle添加下面<<<<< 中的内容 >>>>>

 

def enableProguardInReleaseBuilds = true // 改为true

android {
...
    defaultConfig {
....
    }
    <<<<< 
        signingConfigs {
            release {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    >>>>>
    splits {
....
    }
    buildTypes {
        release {
            <<<<< signingConfig signingConfigs.release >>>>>
           ...
        }
    }
}

 

5.终端cd 到android目录下.执行命令

./gradlew assembleRelease

 


但是出现了一个问题,> Cannot add task 'wrapper' as a task with that name already exists. 说是在android/build.gradle 文件36行报错

最终发现原因是gradle版本问题

// 旧版本是:
task wrapper(type:Wrapper) {
    //configuration
}

// 新版本是:
wrapper {
    //configuration
}

改完之后,再次执行./gradlew assembleRelease

成功了。


但是发现手机安装完成之后打不开,闪退!

在项目根目录下执行

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

执行成功之后会在/android/app/src/main/assets下面生成一个Bundle文件
完事之后再次到android目录下执行 ./gradlew assembleRelease

 

如果还是不行
找到android/app/src/main/java 删除 drawable

再次重新打包即可

 

 

 

 

 

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐