刚开始学习react native,第一步自然是搭建好开发环境,node及jdk本身就有,Python2、Android studio以及Android sdk的安装倒是没什么大问题,按照官网的教程做就行了,还有Android studio我目前理解的是其实主要作用就是配置对应版本的安卓模拟器或者是安装sdk比较方便,

不过在项目正确跑起来之前确实也碰到一些问题,这里把自己的解决经历记录下来

问题一:react-native run-android的时候在download gradle的时候等了很久,然后就是提示失败,说是打包的时候出现了解压异常什么的问题,另外也提示说确认是否已经连接到可用的安卓设备什么的,捣腾了一会安卓模拟器发现我确实没有配置正确,因为Android studio默认的安卓模拟器是Android 9,但是官网说明目前应该使用Android 8.1,好吧那就新建一个,结果还是不行,然后考虑到每次运行的时候总是在提示说下载gradle-4.4-all.zip等待一段时间,所以我想可能就跟这个有关,网上查了一下还真有这个问题,其实就是下载超时,解决方式就是自己先下载好对应压缩包放到本地,然后修改配置文件把路径指向本地文件即可,

配置文件是项目目录下的android\gradle\wrapper\gradle-wrapper.properties,修改后内容如下,而且注意最好用相同版本,我开始就是下载别人博客下提供的链接,下载了比较旧的一个版本结果运行还是出错了,下载gradle访问http://services.gradle.org/distributions/即可,可以下载到各个版本的

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
#指定本地文件代替原本网络下载
distributionUrl=file:///D:/android-sdk/gradle-4.4-all.zip

问题二:gradlew assembleRelease打包安装包出错,同样按照官网教程一步步做,前面的生成签名文件问题不大,但是最后运行gradlew assembleRelease的时候报错了,错误提示大概是说不能访问@babel\parser\.bin\parser这个目录的问题,我在node_modules下确实找到了这个文件夹,发现最终目录下是一个快捷方式,然后这个快捷方式确实打不开,感觉问题应该就出在babel这里,然后我看了一下项目的package.json,发现有这样一个包

metro-react-native-babel-preset

这应该是react基于babel封装的一个包,实现了react自身在转换js时需要进行的一些操作什么的,我心想换一个版本看看好不好用,

执行命令npm view metro-react-native-babel-preset versions查看该包的所有版本,嗯,确实之前有很多版本,而现在用的是最新的0.49.0,

那么先npm uninstall metro-react-native-babel-preset把原来的包卸载,

然后重新安装上一个版本,npm i --save-dev metro-react-native-babel-preset@0.48.3,命令中@指定版本确保安装0.48.3版本的包,安装完成重新执行打包命令gradlew assembleRelease

这一回执行没有出现异常,最后提示构建成功,项目目录下的android\app\build\outputs\apk\release目录也出现了最新的apk文件。

至此react native两个基本的操作即模拟器运行以及生产安装包可算是成功了,总结来讲主要的问题点是版本之间的兼容问题,新版本的某些行为特性改变或者是旧版本还未出现所使用到的行为特性,这都可能导致整体的运行异常

react-native-cli运行项目及打包apk失败的解决过程的更多相关文章

  1. 第07讲- Android项目的打包apk

    第07讲Android项目的打包apk 方法一:在工作目录bin文件夹下有一个与项目同名的apk文件 (最懒惰的方式,不推荐,不安全,不利于版本更新,只有在开发模式时使用) 方法二:使用key方式 签 ...

  2. React Native 系列(三) -- 项目结构介绍

    前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...

  3. React Native安卓代码混淆和打包

    一上午就整了个React Native的打包,中间还遇到各种问题,这里还是记录下吧: 文档链接: http://reactnative.cn/docs/0.45/signed-apk-android. ...

  4. React Native for android 项目驱动教程

    第一节 搭建开发环境 第二节 显示页面标题 第三节 实现页面布局 # React native是什么? React Native,是颠覆性的移动开发技术.它使用js开发,又是原生应用,不同于Hybri ...

  5. windows安装React Native开发运行环境

    React Native是什么 React Native是facebook开源的一个用于开发app的框架.React Native的设计理念:既拥有Native (原生) 的用户体验.又保留React ...

  6. React Native 在现有项目中的探路

    移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...

  7. React Native与原生项目连接与发布

    前面的各种环境配置按照官方文档一步一步来,挺详细,宝宝在这里就不多说废话了. 其次,前面的配置,我参照的这个博主的文章React Native 集成到iOS原生项目 下面是宝宝掉过的坑(半径15M): ...

  8. Android Studio 学习笔记1.1 创建自己的第一个安卓项目并且打包APK

      自从上一次安装完安卓开发工具Android Studio后抽时间看视屏尝试编写自己的第一个安卓项目约两周的时间 每天下班后会花上1~2小时的时间去学习 目前的成果如下:次元宅的我.apk 嘛 总而 ...

  9. CoCos2dx开发:PC端调试运行正常但打包apk文件后在手机上点击闪退

    记:今天调试时出现的一个PC端调试运行正常,但打包apk文件后在手机上点击闪退的问题. 可能在不同的情况条件下,会有不同的原因导致apk安装后闪退问题.拿android studio等软件来说,开发安 ...

随机推荐

  1. 小程序开发笔记【五】---基于LBS附近动态查询

    实现思路 : 获取用户当前位置经纬度坐标 查询动态时将经纬度坐标传给后台 后端通过sql语句计算经纬度坐标之间的距离 // 附近20公里发的动态 按时间排序 let sql = `SELECT * , ...

  2. Python程序调试工具Py-Spy

    序言 如果你是从Java语言开发转Python开发,可能在庆幸自己的开发效率提高了很多,但是也有痛苦的时候,比如你会怀念jstack,jmap, 等各种工具在生产环境做perfomance tunin ...

  3. php使用imagettftext()函数有干扰线但是没有文字的问题解决

    public function code() { //主要参数 if($font_size == 0) $font_size = 20; if($img_width == 0) $img_width ...

  4. php 获取一张图片所有点的颜色值,感觉不错转载学习

    片段一 //similar_text($numStr, $val, $pre); //计算两个字符串的相似度 //print_r($pre); $imgPath = 'time.jpg'; $size ...

  5. jquery validate 动态生成的多个同名input的验证

    我的应用场景是,添加和修改入库单的明细,明细是以表格的形式呈现,可以动态添加商品,用jquery.validate插件做数据验证. 由于jquery.validate插件验证同名的input时只验证第 ...

  6. C#实现outlook自动签名

    Outlook下实现自动签名的方式   网上找到一篇资料是在outlook里用vba实现的,但是这样实现的方式由于数字认证的问题不便于部署 在此介绍一种C#下实现的方式,目前确定的outlook版本为 ...

  7. Windows 计算机取证

    windows安全账号管理(SAM) Unveilling The Password Encryption Process Under Windows –a Practical Attack 上述这篇 ...

  8. qt 操作串口 QSerialPort

    准备工作 *.pro中加入 QT += serialport 初始化 void MainWindow::initPort() { //读取串口信息 foreach (const QSerialPort ...

  9. sqlplus连接远程Oralce数据库

    1. 下载 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 2. 三个包 in ...

  10. Kubernetes概念之RC

    感觉自己浪费了一年的时间,种一棵树最好的时间是十年前,还有就是现在,虽然这颗树种了又种,种了又种,这次真的要种了......   本文通过<Kubernetes权威指南>的概念部分学习总结 ...