利用RN與原生通信開發(fā)的模塊獨(dú)立出來,不管是給自己的多個(gè)項(xiàng)目共用,或者開源給到別人用,這都是一件很優(yōu)秀的事情。
就以我自己開發(fā)的一個(gè)在ios和android通用的react-native-face-verify組件為例來講一下,開發(fā)插件框架搭建
1 創(chuàng)建并實(shí)現(xiàn)
1.1 創(chuàng)建自定義組件模版項(xiàng)目
1.1.1 安裝react-native-create-library
目前官方推薦的是create-react-native-module
本文介紹還是基于react-native-create-library
$ npm install-g react-native-create-library
1.1.2 創(chuàng)建模板項(xiàng)目
我們用命令react-native-create-library創(chuàng)建項(xiàng)目,并指定平臺為ios,android,指定android中的package,其他參數(shù)可以自行參考在react-native-create-library在github上的文檔說明,這里就不贅述
$ react-native-create-library--package-identifier com.may.faceverify--platforms android,ios faceverify
我們重命名一下項(xiàng)目名
$ mv verify react-native-face-verify
有人可能會(huì)說,樓主為什么不直接生成react-native-face-verify的項(xiàng)目,而要先生成faceverify再重命名。其實(shí)這是一個(gè)小技巧,因?yàn)槔胷eact-native-create-library生產(chǎn)的項(xiàng)目,一些跟組件相關(guān)的名稱或者類會(huì)默認(rèn)加上react-native或者RN前綴。
例如,如果你的初始項(xiàng)目名是react-native-face-verify,那么package.json中定義的組件名將是react-native-react-native-face-verify,android模塊中定義的相關(guān)類會(huì)是RNReactNativeFaceverifyModule.java,這不是我們想要的。
ok, 我們繼續(xù)。
現(xiàn)在的目錄結(jié)構(gòu):
$ tree
└── react-native-face-verify
├── README.md
├── android
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── reactlibrary
│ ├── RNFaceverifyModule.java
│ └── RNFaceverifyPackage.java
├── index.js
├── ios
│ ├── RNFaceverify.h
│ ├── RNFaceverify.m
│ ├── RNFaceverify.podspec
│ ├── RNFaceverify.xcodeproj
│ │ └── project.pbxproj
│ └── RNFaceverify.xcworkspace
│ └── contents.xcworkspacedata
└── package.json
生成好組件項(xiàng)目后,就可以開始編寫實(shí)現(xiàn)代碼了或之前寫好的代碼復(fù)制到對應(yīng)文件夾下