Wednesday, August 17, 2016

Android React Native: com.android.ddmlib.InstallException: Failed to establish session at com.android.ddmlib.Device.installPackages(Device.java:894)

今天集成 React_Native 的时候,初始化了项目之后,使用使用react-native run-android 命令老是报错:
如下:



如标题, adb  无法连接你的真机。

其实,react-native run-android   并不实用。 因为,我们可能需要一套代码去实现多个APP. 这个时候,就好用了!

我在Github 上找到参考资料:
https://github.com/facebook/react-native/issues/2720






解决方案:  

不要使用它的命令。

1  开启 react-native server 使用这个命令
react-native start  or   npm start.

注意,这个要在你的 react-native 的根目录里面而不是 android目录下奥!

2   进入你的android  dir

先不要打包,这个时候,你要先把react-native server 的jsBundle 下载下来,才可以打包,要不然会出现下面的问题:




在你的根目录下面先执行:
curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"


使用 gradlew  命令打包。把你的包安装到 手机上之后。


3  这个时候,你打开APP.  找到你的app.  打开设置界面。 找到的APP 给APP一个权限。

APP设置界面:



点击权限管理:




显示悬浮穿给到权限: 就可以了!

进入的你写的Demo.

晃动你的手机,就会出现:



点击 Dev Setting 

点击最下面的Item 会出现:




配置你的电脑的IP地址,和端口

IP:PORT

注意,这里的port 端口是 react-native server 端口, 如果你没有修改的话,默认的是8081 端口!

这个时候就可以了,当你修改了 js 代码的时候,晃动一下手机,就会弹出:



当你 点击Reload 的时候,就会从react-native server 端把你修改的Js 代码,自动更新下来的。从而更新View.


FQ:

1  当你 react-native start or  nom start 
不成功的时候,有可能你的已经开启了服务。或者你的电脑的8081 端口已经被占用了!

查看端口是否被占用,方式自己搜搜
Mac:

lsof -n -i4TCP:8081 | grep LISTEN



这里如果现实 node,说明的你的服务已经开起来了。 不需要重复开启了。 如果是其他的 不是node,你需要干掉这个进程。在开启就没有问题了!





No comments:

Post a Comment