react-native植入原生应用-踩坑记

2016-05-17  本文已影响3748人  皮卡亿千万

首先我用的是windows10,react-native 0.25, genymotion

http://reactnative.cn/docs/0.25/embedded-app-android.html#content
使用的是这篇文章的参考,官方文档

大概过程都说过了吧,但是其中还是有不少坑要踩的。

首先按照步骤运行之后,你可能会遇到一下几个问题。

开发者菜单

按照教程加入dev setting的话你得在加入一个activity
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

build.gradle依赖

如果报错提示com.android.support:appcompat-v7之类的报错,就把build.gradle中的依赖改成
compile 'com.android.support:appcompat-v7:23.0.1'

打开模拟器,出现红框 Can't find variable: __fbBatchedBridge

这个错误,原因大概就是木有连接上服务器呢,那么哪些原因会导致木有链接呢?
模拟器的网络开了吗?连接地址是你的服务器ip吗?服务器正确开启了吗?或者你的nodejs版本是不是太老了?
npm start里面也有一些提示,跟着提示做一般就没有问题。

植入原生应用的话我是没改过访问地址的,可以在开发者菜单里面修改

Paste_Image.png Paste_Image.png

找不到模块的问题

Requiring unknown module "ReactPerf". If you are sure the module is there, try restarting the packager or running "npm install"

https://github.com/facebook/react-native/issues/6397

参照这个网站,你可以先使用 npm list看一下你是否有没有安装的包,之后手动加入你的package里面再npm install试一下吧

成功后的警告Warning: ReactNative.createElement is deprecated. Use React.createElement from the “react” package instead.

Deprecations
Requiring React API from react-native is now deprecated - 2eafcd4 0b534d1 Instead of:
import React, { Component, View } from 'react-native';
you should now:
import React, { Component } from 'react';import { View } from 'react-native';

java.lang.UnsatisfiedLinkError: could find DSO to load: libreactnativejni.so

32 64的问题?
首先gradle.properties 最后添加 android.useDeprecatedNdk=true

之后再build.gradle中添加

android {    
  ...
  defaultConfig {        
    ...  
    ndk { 
        abiFilters "armeabi-v7a", "x86"     
     }  
  }    
  ...
 packagingOptions {    
    exclude "lib/arm64-v8a/librealm-jni.so" 
   }
...
}

白屏

系统设置的权限不够, 显示悬浮窗这个权限

https://segmentfault.com/q/1010000004352896?_ea=579713

上一篇下一篇

猜你喜欢

热点阅读