刚开始学习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. 2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解

    分析: 当n=1时ans=4=f(5)-1; n=2,ans=12=f(7)-1; n=3,ans=33=f(9)-1; 于是大胆猜想ans=f(2*k+3)-1. 之后用矩阵快速幂求解f(n)即可, ...

  2. Git系列四之在本地服务器搭建gitlab仓库管理(centeros环境下)

    1.Git仓库管理 现在本地已经创建了git仓库,又在gitlab上创建了一个git仓库,并且让这两个仓库进行远程同步,这样gitlab仓库既可以备份也可以与他人协作管理远程仓库以及根据需要推送或拉取 ...

  3. HTML+CSS学习笔记整理

    一.标签语义化(重点): 1.可以方便代码的阅读和维护 2.同时让网络爬虫更好的解析从而更好的分析其内容 3.更好的优化引擎 如何做到标签语义化:个人理解是,首先,网页的HTML主要作用在网页的结构上 ...

  4. 【原创】闲来无事,用Winform写了个简易浏览器

    核心是利用了winform自带的WebBrowser控件,修改了下IE内核的版本,目前还是单线程的,逻辑挺简单的,萌新都能看懂. 废话不多说,上代码,附打包project. 链接:https://pa ...

  5. Jquery ajax与asp.net MVC前后端各种交互

    1.Jquery通过ajaxSubmit提交表单 if (jQuery("#Edit_from").validate().form()) { jQuery("#Edit_ ...

  6. mvc5 源码解析2-1:mvchandler的执行

    上一节说在urlroutingmodule中mvchandler 映射到httpcontext上,那mvchandler又是怎么执行的呢? (1).httpruntime 从isapiruntime  ...

  7. Redis主从复制看这篇就够了

    一.概念和作用 概念:主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 作用: 读写分离: 容灾恢复: 二.复制原理 slav ...

  8. Python 字符串多替换时性能基准测试

    结论 先说结果, 直接替换是最好的. replace 一层层用, 方法笨了一点, 还可以. 时间消耗: tx2 < tx3 < tx1 < tx4 t2 < t3 < t ...

  9. i春秋——“百度杯”CTF比赛 九月场——123(Apache解析pht,phtml,php3,phps等 php别名)

    网页源码提示用户信息在user.php中,直接访问是不会有显示的,于是查找相应的备份文件,vim交换文件等,最后发现/user.php.bak 用burp采用如下配置开始爆破 最后爆破出两个账号 登录 ...

  10. Vue入门篇

    Vue-cli开发环境搭建 1. 安装nodejs 2. 设置缓存文件夹 $ npm config set cache "D:\vueProject\nodejs\node_cache&qu ...