最近开始接触rn,官方起手,装了一堆工具,然后启动项目的时候出现了一堆问题,这里针对我遇到的一些问题提供一些解决方案。

本人开发环境mac,在启动ios的时候没啥大问题,可以直接启动,这里提示一点,因为可能会启动多个,所以可以在启动的时候指定端口,防止冲突react-native run-ios --port=xxxx

但是在启动安卓的时候出现了一堆问题,一开始使用命令react-native run-android --port=xxxx的时候,命令行报错

$ react-native run-android
Scanning folders for symlinks in /Users/ric/myprojs/albums/node_modules (6ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)... FAILURE: Build failed with an exception. * What went wrong:
Could not determine java version from '9.0.4'. * Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html

无法判断java版本,这里查找了一些资料,只要把jdk换成1.8就可以了,我们这里可以装多个版本jdk,然后配置环境变量,动态切换版本即可。

在根目录下创建.bash_profile文件,添加内容并保存

#设置sdk路径
export PATH=${PATH}:/Users/stevenzwzhai/Library/Android/sdk/platform-tools/:/Applications/Android\ Studio.app/sdk/platform-tools
#设置idk 8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8.0`
#设置 JDK 9
export JAVA_9_HOME=`/usr/libexec/java_home -v 9.0.4`
#默认JDK 9
export JAVA_HOME=$JAVA_9_HOME
#alias命令动态切换JDK版本
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk9="export JAVA_HOME=$JAVA_9_HOME"

source .bash_profile配置立即生效。

然后我们切换jdk版本,命令行直接jdk8即可,继续运行上面的命令,如果报错显示sdk找不到,那么可以在项目的android目录下创建文件local.properties并保存下面内容

sdk.dir = /Users/stevenzwzhai/Library/Android/sdk

接着我们再次运行命令,这次不报错了,但是安卓模拟器红屏,显示

unable to load script from assets 'index.android.bundle'.Make sure your bundle ispackged correctly or you are running a packger server.

这里,有一些其他人的解决办法

1.在android\app\src\main下新建assets文件

2.在项目根目录下执行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

3.重新执行react-native run-android

但是我这里使用却没有效果,所以我的应该是端口问题,我发现安卓在启动程序的时候头部显示,10.0.x.x:8081,因为默认是端口8081,但是我们启动的时候手动设置成了别的端口,这里就需要修改模拟器的代理,ip还是手机的ip,注意不是打开wifi那里显示的ip,而是模拟器启动我们项目时头部一条绿色的框框里的那个,只要reload那个框框就会显示,然后把端口改成你启动项目时的端口就可以了。

这样我们就可以不用启动Android studio或者Xcode来启动项目了。

最新文章

  1. QuickFIX/N 动态存储配置信息
  2. SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework
  3. Bellman-Ford & SPFA 算法——求解单源点最短路径问题
  4. shadowmap 及优化
  5. routes.IgnoreRoute("{resource}.axd/{*pathInfo}")作用
  6. 关于Spring的Controller及Struts的Action的多线程的注意
  7. [转贴] C/C++中动态链接库的创建和调用
  8. MiniCodeEditor:只有168字节的在线Html/CSS/JavaScript编辑器
  9. java基础day7
  10. React和Angular
  11. HDU 3231 Box Relations
  12. [Centos] mod_wsgi 安装流程以及遇到问题解决办法。apxs: command not found 或 Sorry, Python developer package does not appear to be installed.
  13. KNN--用于手写数字识别
  14. path和classpath细节
  15. 搭建maven
  16. 理解Python中的yield
  17. XVIII Open Cup named after E.V. Pankratiev. GP of Romania
  18. 后端必备的Linux知识
  19. 数字进度条组件NumberProgressBar
  20. 第一个React Native程序踩到的那些坑

热门文章

  1. luogu P1462 通往奥格瑞玛的道路
  2. 2019.1.2 Spring管理事务的方式
  3. DataTables.Queryable Sample
  4. Windows 2008 Scheduled tasks result codes
  5. 剑指offer13 在O(1)时间删除链表的结点
  6. LVS的DR模式负载均衡
  7. caffe 学习(3)——Layer Catalogue
  8. Google Map中的瓦片
  9. mongo复制集、分片集(亲测)
  10. springBoot+mybatisPlus小demo