美文网首页
【踩坑】React Native 打包 APK

【踩坑】React Native 打包 APK

作者: KimYYX | 来源:发表于2019-05-13 09:50 被阅读0次

    一开始跟着教程打包并没有成功。大概踩了如下的坑,记录下来希望对后来的人有帮助。

    1. android:attr/xxxxxx not found

    我的 APP 中用了 react-native-picker 这个插件,在构建 debugger 版本的时候,虽然报错,但不影响运行,所以一直没太在意。直到这次构建 release 版本的时候,直接构建不成功了,才发现这并不是个小问题。

    查了网上的相关资料,基原因大概就是 com.android.support:support-v4 升级导致的。解决思路就是将 com.android.support 固定在较低版本,思路大致有两种

    方法1:全局固定,在 build.gradle 中添加配置

    configurations.all {
      resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
      }
    }
    

    方法2:固定插件的 'com.android.support,不细讲了。

    可惜的是,上面两种方法我都没成功,后来看到 StackOverflow 里面的一个回答,倒是解决我的问题:将 node_modules\react-native-picker\android\build.gradle 里面的 compileSdkVersiontargetSdkVersion 从原来的 27 改成 28

    2. Release 包闪退

    老实说,起初这个问题真是令我很沮丧,由于不是 APP 开发出生,虽然听过 logcat,但压根不知道如何使用。好在现在 Android 技术成熟,文档完善,没折腾多久就上手了。

    言归正传,说到这个坑就不得不吐槽上面提到的教程,里面提到:

    使用 ./gradlew assembleRelease 会把所有用到的 JavaScript 代码都打包到一起,然后内置到 APK 包中。

    事实上,执行指令后这些资源并没有打包到 apk 里,apk 仅仅是个空壳,而这正是导致闪退的原因。最后我是通过在根目录执行下面的命令解决的资源打包问题:

    react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle
    

    然后从根目录进入 android 目录, 执行 ./gradlew assembleRelease

    3. Request Fail

    debug 环境好好的请求接口,发现在 release 里面就报错了,这个问题 Android 可以通过这个方法解决,iOS 的看这里

    相关文章

      网友评论

          本文标题:【踩坑】React Native 打包 APK

          本文链接:https://www.haomeiwen.com/subject/qxbkaqtx.html