react-native发行apk总结

本文只是个人用来记录项目开发过程中遇到的问题、思路及解决方案,具体出现的问题原因,后面空闲下来再做总结。

生成发行的apk

在终端先进入根据目录下的android目录,然后执行./gradlew assembleRelease 表示执行当前目录下的gradlew脚本文件,执行参数是assembleRelease,Gradle 的assembleRelease参数会把所有用到的 JavaScript 代码都打包到一起,然后内置到 APK 包中。

$ cd android  
$ ./gradlew assembleRelease
$ adb install //将安装包安装到手机里面

生成的 APK 文件位于android/app/build/outputs/apk/app-release.apk

生成增量发行包

首先通过rm -rf codepush/**先删了根目录上的codepush目录下的所有内容,然后根据情况分别打包android和ios。

  1. 先开始编译bundle文件
  2. 打包bundle文件
Android
$ react-native bundle --platform android --dev false --entry-file index.js --bundle-output codepush/index.android.bundle --assets-dest codepush/ 
$ zip -r codepush.android.zip codepush //将codepush里面的内容压缩
IOS
$ react-native bundle --platform ios --dev false --entry-file index.js --bundle-output codepush/index.ios.bundle --assets-dest codepush/
$ zip -r codepush.ios.zip codepush //将codepush里面的内容压缩

踩坑

  1. 执行./gradlew assembleRelease时报错:
    1-1 -bash: ./gradlew: Permission denied错误。
    解决方法:执行chmod +x gradlew命令。
    1-2
    /XXX/node_modules/react-native-smart-barcode/android/src/main/java/com/reactnativecomponent/barcode/RCTCapturePackage.java:41: 错误: 方法不会覆盖或实现超类型的方法
    @Override
    ^
    注: 某些输入文件使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    1 个错误

解决方案: 找到相应的文件,注释掉 @Override。

1-3
/xxx/android/app/build/intermediates/res/merged/release/drawable-xhdpi-v4/src_user_images_help.jpg: error: Duplicate file.
/xxx/android/app/build/intermediates/res/merged/release/drawable-xhdpi/src_user_images_help.jpg: Original is here. The version qualifier may be implied.

:app:processReleaseResources FAILED

FAILURE: Build failed with an exception.
解决方案: 错误提示是,两个文件重复了,解决思路一是删掉了第一个路径下的文件,再进行编译,结果发现删掉的文件又自动在相同的目录下生成了; 思路二是删除第二个路径下的文件,结果还是自动生成。后来删除了两个路径下的文件就编译通过了。

1-4
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ‘:app:validateSigningRelease’. Keystore file /xxx/android/app/my-release-key.keystore not found for signing config ‘release’.
解决方案:
1-4-1
在终端执行$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000命令,会自动生成my-release-key.keystore密钥库文件,然后把这个文件放到app目录下。
1-4-2
编辑~/.gradle/gradle.properties(全局配置,对所有项目有效)或是项目目录/android/gradle.properties(项目配置,只对所在项目有效)。如果没有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=*****
}

猜你喜欢

转载自blog.csdn.net/abcwangruili/article/details/81746948