React Native Android原生方向进阶一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28978893/article/details/79870727

虽然说react native的设计初衷是为了敏捷开发,write once,run anywhere,但是还是开放了原生接入这一高级功能,而原生也是一位这个开发方向一个绕不过去的坎,今天先跑了一下流程,总结一下先

1、react-native init mengft_module
初始化一个react native项目,取名mengft_module,初尝0.55.1版本

这里写图片描述

2、android studio中打开项目,新建一下module(既然是进阶,咱们就不在原来的项目上修改了,搞一个单独的module包吧)

这里写图片描述

3、这时settings.geadle和build.gradle都会同步到这个新增的moudle,但是现在同步项目是会有报错的

依次这么解决

问题一:
问题一

解决方案
修改主项目下的AndroidMainifest.xml文件

<uses-sdk tools:overrideLibrary="com.facebook.react"/>

这里写图片描述

问题二:
这里写图片描述

react-native-toast这个module没有和主项目建立依赖,请核实你的build.gradle和settings.gradle文件,注意拼写和引入方式,只可能是这两个文件出问题

问题三:
这里写图片描述
类似于问题一,依然是解决merge的冲突
修改新建的module下的AndroidMainifest.xml文件

<uses-sdk tools:overrideLibrary="com.facebook.react"/>

这里写图片描述

这时候报错已经解决了

接下来,我们在module中添加能和js进行通讯的原生代码来测试功能,案例我们就参考react native中文网的把,原生Toast的调用,代码我就不贴了,没啥参考价值

你会发现在新建ToastReactMoudle.java的时候,你想继承于ReactContextBaseJavaModule, 但是这个资源就是索引不到,在module的build.gradle文件中加一行

compile 'com.facebook.react:react-native:+'

接着,我们尝试着把现在的module和现在的项目在代码逻辑上再一步分离,将module文件移到如下位置
这里写图片描述

这样代码结构就非常合理了
但是,我们还需要做一件事,修改settings.build文件,因为module文件的位置发生了变化

include ':react-native-toast'
project(':react-native-toast').projectDir = new File(rootProject.projectDir, '../module/react-native-toast/android')
<TouchableWithoutFeedback onPress={() => NativeModules.Toast.show('Android弹出框')}>
   <View>
     <Text>Android弹出框</Text>
   </View>
</TouchableWithoutFeedback>

这样就完事了

猜你喜欢

转载自blog.csdn.net/qq_28978893/article/details/79870727