react-native-cli运行项目及打包apk失败的解决过程
刚开始学习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/即可,可以下载到各个版本的
问题二:gradlew assembleRelease打包安装包出错,同样按照官网教程一步步做,前面的生成签名文件问题不大,但是最后运行gradlew assembleRelease的时候报错了,错误提示大概是说不能访问@babel\parser\.bin\parser这个目录的问题,我在node_modules下确实找到了这个文件夹,发现最终目录下是一个快捷方式,然后这个快捷方式确实打不开,感觉问题应该就出在babel这里,然后我看了一下项目的package.json,发现有这样一个包
这应该是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失败的解决过程的更多相关文章
- 第07讲- Android项目的打包apk
第07讲Android项目的打包apk 方法一:在工作目录bin文件夹下有一个与项目同名的apk文件 (最懒惰的方式,不推荐,不安全,不利于版本更新,只有在开发模式时使用) 方法二:使用key方式 签 ...
- React Native 系列(三) -- 项目结构介绍
前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...
- React Native安卓代码混淆和打包
一上午就整了个React Native的打包,中间还遇到各种问题,这里还是记录下吧: 文档链接: http://reactnative.cn/docs/0.45/signed-apk-android. ...
- React Native for android 项目驱动教程
第一节 搭建开发环境 第二节 显示页面标题 第三节 实现页面布局 # React native是什么? React Native,是颠覆性的移动开发技术.它使用js开发,又是原生应用,不同于Hybri ...
- windows安装React Native开发运行环境
React Native是什么 React Native是facebook开源的一个用于开发app的框架.React Native的设计理念:既拥有Native (原生) 的用户体验.又保留React ...
- React Native 在现有项目中的探路
移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...
- React Native与原生项目连接与发布
前面的各种环境配置按照官方文档一步一步来,挺详细,宝宝在这里就不多说废话了. 其次,前面的配置,我参照的这个博主的文章React Native 集成到iOS原生项目 下面是宝宝掉过的坑(半径15M): ...
- Android Studio 学习笔记1.1 创建自己的第一个安卓项目并且打包APK
自从上一次安装完安卓开发工具Android Studio后抽时间看视屏尝试编写自己的第一个安卓项目约两周的时间 每天下班后会花上1~2小时的时间去学习 目前的成果如下:次元宅的我.apk 嘛 总而 ...
- CoCos2dx开发:PC端调试运行正常但打包apk文件后在手机上点击闪退
记:今天调试时出现的一个PC端调试运行正常,但打包apk文件后在手机上点击闪退的问题. 可能在不同的情况条件下,会有不同的原因导致apk安装后闪退问题.拿android studio等软件来说,开发安 ...
随机推荐
- ant-design-pro引用css
ant-design-pro中默认只能引用less文件,引用了css文件也是无效的.所以需要在配置文件config.js中找到 cssLoaderOptions,在 getLocalIdent中加入 ...
- CycleBarrier与CountDownLatch原理
CountDownLatch 众所周知,它能解决一个任务必须在其他任务完成的情况下才能执行的问题,代码层面来说就是只有计数countDown到0的时候,await处的代码才能继续向下运行,例如: im ...
- python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict
本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...
- 【题解】NOIP2015提高组 复赛
[题解]NOIP2015提高组 复赛 传送门: 神奇的幻方 \([P2615]\) 信息传递 \([P2661]\) 斗地主 \([P2668]\) 跳石头 \([P2678]\) 子串 \([P26 ...
- Spring Boot 实战 入门
目前没有系统学习过 Spring 框架,参与工作时,直接参与到了 Spring Boot 项目的开发.目前还比较菜,所以,你要是和我一样,不妨也跳过 Spring 框架的学习,直接学习 Sring B ...
- 【开发笔记】- Grails框架定义一个不是数据库字段得属性
实体类 class Book{ String name String author // myfiled 我不想他在数据库中生成book表的字段 String myfield } 添加声明 class ...
- js中面向对象(创建对象的几种方式)
1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 注:本文引用于 http://www.cnblogs. ...
- Java 之 Properties 集合
一.Properties 概述 Properties 是Hashtable的子类,不允许key和value是null,并且它的key和value的类型都是String. 二.常用方法 1.构造方法 P ...
- Android 9.0网络权限适配
在做Android开发时,使用华为的p20和平板(均为Android 9.0)测试时,发现不能使用WIFI网络,一番郁闷纠结查找后 直接上方法: 在res文件夹下创建xml文件夹,在xml里面创建文件 ...
- Java中 / 和 %
Java中 / 和 % 每天积累一些 Java 的知识点,补充自己的不足. 今天在刷面试题的碰到 % ,一下子还真想不起来这个运算符的作用,赶紧重温一下,这里我写了个小代码来体现 / 和 % 的区别. ...