本文记录了新创建的Android工程是如何打包的(即导出签名的APK文件),包含React Native工程中的Android端打包过程。

开发环境:
macOS Sierra 10.12.3
Android Studio 2.2.2

1.生成签名文件

点击创建签名文件入口:Build->Generate Signed APK…

img1.jpeg
点击下一步,选择 Create new…(非第一次打包点击另一个按钮,选择已经存在的签名文件)之后如下图所示,根据实际情况进行填写。
create-keystone.jpeg
点击 OK,创建成功。

2.导出签名APK包

继续下一步,选择apk存放路径点击确定等几分钟之后就可以了。(未截图,有不清楚可留言)

3.遇到的问题及解决方法

错误1

React Native工程成功导出apk之后安装到手机,打开直接崩溃,查到错误信息如下:

   AndroidRuntime: FATAL EXCEPTION: mqt_js   Process: com.rn_yunkong, PID: 13555   java.lang.RuntimeException: com.facebook.react.devsupport.JSException: Could not get BatchedBridge, make sure your bundle is packaged correctlyat com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler.handleException(DefaultNativeModuleCallExceptionHandler.java:24)at com.facebook.react.devsupport.DisabledDevSupportManager.handleException(DisabledDevSupportManager.java:158)at com.facebook.react.cxxbridge.CatalystInstanceImpl.onNativeException(CatalystInstanceImpl.java:431)at com.facebook.react.cxxbridge.CatalystInstanceImpl.access$400(CatalystInstanceImpl.java:51)at com.facebook.react.cxxbridge.CatalystInstanceImpl$NativeExceptionHandler.handleException(CatalystInstanceImpl.java:447)at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:33)at android.os.Looper.loop(Looper.java:207)at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)at java.lang.Thread.run(Thread.java:818)  Caused by: com.facebook.react.devsupport.JSException: Could not get BatchedBridge, make sure your bundle is packaged correctlyat com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)at android.os.Handler.handleCallback(Handler.java:815)at android.os.Handler.dispatchMessage(Handler.java:104)at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)at android.os.Looper.loop(Looper.java:207) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) at java.lang.Thread.run(Thread.java:818)    Caused by: com.facebook.jni.CppException: Could not get BatchedBridge, make sure your bundle is packaged correctlyat com.facebook.react.bridge.queue.NativeRunnable.run(Native Method) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31) at android.os.Looper.loop(Looper.java:207) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) at java.lang.Thread.run(Thread.java:818) 

原因:
打离线包需要生成本地bundle文件
解决办法:
在工程根目录下执行:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ /注意根据各自工程名字可能有不同程序的修改
注意如果没有工程/android/app/src/main/assets文件,需要先创建。

参考:http://facebook.github.io/react-native/docs/signed-apk-android.html

望多交流学习。

更多相关文章

  1. Android(安卓)Studio(AS)-->drawable与mipmap (官网解释)
  2. Android遇到的错误记录
  3. 【Android(安卓)Studio 学习】—— day 01
  4. 【Android】一个简单又实用的toolbar
  5. Android(安卓)NDK开发基础
  6. Eclipse对Android项目导入、导出、修改工程名详解
  7. Android中调用jni报错
  8. android的崩溃报告(crash dump)
  9. 【Android(安卓)Developers Training】 36. 设置文件共享

随机推荐

  1. 进度条背景的改变,界面更美观
  2. Linux系统下安装android sdk的方法步骤
  3. 利用一个singleInstance的activity实现音
  4. Android在SDcard建文件夹(在Android中移动
  5. Android(安卓)之 Socket 通信
  6. Android(安卓)SDK Android(安卓)NDK Andr
  7. Android获取设备型号和系统版本号、mac地
  8. 【百度地图-安卓SDK】技术详解集锦
  9. relativelayout常用属性
  10. 安卓的下拉控件Spinner