为什么80%的码农都做不了架构师?>>>   

1.生成离线bundle包

开发中了会知道RN项目的资源文件js css 字体图标 image是不在android or ios文件里面的, 离线包就是把 ReactNative 和你写的资源都打包放入 App .

首先在项目根目录创建文件夹: ./android/app/src/main/中创建文件夹assets

切换到项目根目录 运行指令

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

注意: react-native bundle --entry-file index.js 是因为我的项目(react-native ^0.55.1)入口文件为 index.js 而 0.49以前是index.android.js

2.生成签名文件

切换到 ./android/app/ 文件下 运行

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
您的名字与姓氏是什么?[罗]:
您的组织单位名称是什么?[freelancers]:
您的组织名称是什么?[freelancers]:
您所在的城市或区域名称是什么?[嘉兴]:
您所在的省/市/自治区名称是什么?[浙江]:
该单位的双字母国家/地区代码是什么?[china]:
CN=罗, OU=freelancers, O=freelancers, L=嘉兴, ST=浙江, C=china是否正确?[否]:  是

将生成 my-release-key.keystore文件

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 添加签名

...
android {...defaultConfig { ... }signingConfigs {release {storeFile file(MYAPP_RELEASE_STORE_FILE)storePassword MYAPP_RELEASE_STORE_PASSWORDkeyAlias MYAPP_RELEASE_KEY_ALIASkeyPassword MYAPP_RELEASE_KEY_PASSWORD}}buildTypes {release {...signingConfig signingConfigs.release}}
}
...

5.发布前测试应用是否有问题

注意:如果在打包之前,手机上已存开发版本请先删除.

切换到项目根目录下 运行

$ react-native run-android --variant=release

报错 libpng error: Not a PNG file 内容如下

........
:app:generateDebugAssets
:app:mergeDebugAssets
:app:generateDebugResValues
:app:generateDebugResources
:app:mergeDebugResources
AAPT: libpng error: Not a PNG file
Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: libpng error: Not a PNG file
:app:mergeDebugResources FAILEDFAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: libpng error: Not a PNG file* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILED
....

解决方法打开 ./android/app/build.gradle文件

android {......aaptOptions {         cruncherEnabled = false     }}

回到根目录 继续运行指令继续报错

/android/app/build/intermediates/res/merged/release/drawable-xhdpi/node_modules_teaset_icons_success.png: error: Duplicate file.

解决方法:

删除所有/android/app/src/main/res/drawable-xxx文件

回到根目录 继续运行指令,不报错

$ react-native run-android --variant=release

6.生成apk

根目录下 运行指令

cd android && ./gradlew assembleRelease

生成的apk位置:android/app/build/outputs/apk

安装apk

$ cd android/app/build/outputs/apk && adb install app-release.apk

可以直接找到安装包发送给队友

转载于:https://my.oschina.net/oslph/blog/1921809

react native android 打包相关推荐

  1. 关于React Native Android打包报Duplicate resources错的解决方法

    最近,在给React Native 项目打包的时候遇到如下异常提示: Error: Duplicate resources 此错误的意思是某些资源文件重复,首先尝试了手动删除重复的资源文件,然后再打包 ...

  2. Mac打包Android的apk,[Mac][React Native][Android] 打包成apk

    一旦把app写好之后,最后一个步骤就是打包成apk啰 文档中会提到keytool,gradlew assembleRelease. Android打包APK Android 把包成一个APK主要需要几 ...

  3. React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到 ...

  4. React Native Android启动白屏的一种解决方案下

    React Native Android启动白屏的一种解决方案下 参考文章: (1)React Native Android启动白屏的一种解决方案下 (2)https://www.cnblogs.co ...

  5. React Native Android启动白屏的一种解决方案上

    React Native Android启动白屏的一种解决方案上 参考文章: (1)React Native Android启动白屏的一种解决方案上 (2)https://www.cnblogs.co ...

  6. Android之Windows下搭建React Native Android开发环境(差不多搞了一天)

    Android之Windows下搭建React Native Android开发环境               穷逼买不起mac,但是他们都说React Native Android只能在mac下面 ...

  7. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  8. react native Android端保持APP后台运行--封装 Headless JS

    react native Android端保持APP后台运行--封装 Headless JS 前些日子在做后台下载时踩了后台运行这个大坑,RN官网文档上面在安卓上提供了Headless JS方法,iO ...

  9. 修改React Native Android'默认字体颜色为黑色

    修改React Native Android'默认字体颜色为黑色 找到res/values/styles.xml文件插入代码 <style name="AppTheme" p ...

最新文章

  1. OpenMP知识点汇总
  2. php 图片处理类,分享php多功能图片处理类
  3. java反射机制的调用
  4. 随机存取是什么意思_手机小白必看!12GB+256GB,同样是GB,它们到底有什么不同?...
  5. 小程序开发(2)-之app.js、app.wxss、project.config.json说明
  6. MongoDB学习手记
  7. Kali2.0——ssh使用
  8. 【转】Volatile 实现原理
  9. 20191109每日一句
  10. win7远程桌面怎么关闭计算机,win7系统关闭远程桌面服务的操作方法
  11. 手机ncm转mp3工具_一款手机、电脑都能用的文字转语音工具,够高能! - 橘子世界...
  12. 使用 Illustrator 中组合形状的方法详解
  13. 股票指标接口合集 macd指标接口api kdj指标接口api,均线指标接口api,价格api
  14. linux alarm函数clock,linux c之alarm函数的使用,定时器的实现
  15. 关于Unity下载资源默认下载到C盘,更改到其他盘的方法
  16. mysql数据的复制与恢复_MySQL 数据库的备份与恢复
  17. 寻迹小车逻辑电路模块
  18. 青云、UCloud、阿里云、腾讯云等分别都有哪些特点?
  19. 关于1byte 1KB 1MB 1GB求其所能表示的地址范围
  20. 使用spring的DelegatingFilterProxy 写xss filter

热门文章

  1. iOS基础 - 控制器
  2. sharepoint被阻止的文件类型解释说明
  3. beeline执行sql文件_MyBatis的SQL执行流程不清楚?看完这一篇就够了
  4. springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略
  5. Golang——Json的序列化和反序列化
  6. python pandas 数据库_Python中pandas函数操作数据库
  7. 为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...
  8. 实现iframe_面试官:来说说单点登录的三种实现方式
  9. java输出一副扑克牌_JAVA编一副扑克牌
  10. c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理