React Native基础之Linking Libraries 链接库配置-iOS适配开发

React Native基础之Linking Libraries 链接库配置-iOS适配开发

(一)前言

这一讲来看一下iOS开发中Linking Libraries链接库配置模块详解。

在实际开发中,有时候需要第三方库或者其他辅助项目来支持主项目开发,此时,如果把所有的三方库都包含进主项目,主项目会变得非常臃肿。此时,采取一种方案:把互不干扰的功能打包成静态代码库。

使用静态库的时候,大多数情况是简单拖拽文件到项目中就行了,但是有时候需要配置一下。

在创建React Native项目的时候,一些库已经部署到Libraries文件夹下面,这是因为命令行下创建项目已经给我们配置好的,我们在使用纯JavaScript的时候,只要require进行引入就可以使用。但是在我们自己手动引入动态库时,就需要配置相关文件,否则使用时会出现相关错误。

(二)添加iOS原生库

2.1 自动连接
“rnpm”是一个社区开源项目,可以提供原生代码自动依赖链接功能

a. 安装rnpm
命令行:npm install rnpm -g
【注意】rnpm 需要node版本4.1 或者更高版本,目前的版本都达到了 6.2,所以根本不用担心这个问题。
安装过程截图:
这里写图片描述

b. 安装iOS原生库
安装原生功能的依赖库,命令如下:

npm install <library-with-native-dependencies> --save

【注意1】 –save 或者 –save-dev标志非常重要,rnpm会在package.json文件中的dependencies和devDependencies中写入该链接库信息。
【注意2】<library-with-native-dependencies> 这个库必须在npm中有过注册。

c. 链接到原生依赖
终端输入命令:

rnpm link

以上步骤完成以后,这样iOS项目就成功添加原生功能依赖了。
但是这种做法,我是没搞懂!

2.2 手动链接(通常做法)
a. 你需要添加的库肯定是一些原生代码实现的,那么该文件夹中存在一个.xcodeproj文件,把这个文件拖到你的XCode项目中(通常是拖到Libraries文件夹中),具体截图如下:
这里写图片描述

b. 点击主工程项目文件(AwesomeProject.xcodeproj),然后选择Build Phases选项,然后将库中Projects 文件夹中的 .a 扩展名二进制文件拖到 Link Binary with Libraries 中,如下图所示:
这里写图片描述

c. 根据情况添加头文件

对于这一步,不是每一个库都需要这样一步操作,具体根据以下进行考虑:你确定需要在编译的时候就要知道库的内容不?

这里的意思是:
你是否需要在原生代码中使用该库还是只是通过JavaScript进行访问?如果仅仅是通过JavaScript进行访问的话,那么就可以跳过当前这一步了。

这一步对于React Native伴随发布的第三方库来讲不是必须设置的,但是PushNotificationIOS和LinkingIOS这两个是例外。就拿PushNotificationIOS这个来讲,当我们每次接收到一个推送消息的时候,就需要在AppDelegate中回调库中的一个方法。因此在这种情况下面我们需要访问到库的头文件。为了可以打包方便,我们可以打开工程,选择Build Settings选项卡,然后进行搜索Header Search Paths标签,然后添加库的路径。如图所示:

转载自:http://www.lcode.org/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
React Native 可以通过配置 URL Scheme 实现从外部应用程序打开应用程序并传递参数。下面是 iOS 和 Android 上配置 URL Scheme 的步骤: ## iOS 1. 在 Xcode 中选择项目,进入 TARGETS -> Info -> URL Types,点击“+”按钮添加 URL Scheme。 2. 在 URL Scheme 输入框中填写自定义的 URL Scheme,例如:myapp。 3. 在 URL Schemes 中填写应用程序的 Bundle ID。 4. 在 Xcode 中保存并编译项目。 5. 在应用程序中,可以通过 Linking 模块的 getInitialURL 方法获取启动应用程序的 URL,并通过 parse 函数解析 URL 中的参数。 示例代码: ```javascript import { Linking } from 'react-native'; Linking.getInitialURL().then(url => { if (url) { const { queryParams } = Linking.parse(url); console.log(queryParams); } }); ``` ## Android 1. 在 AndroidManifest.xml 中添加 intent-filter。 ```xml <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" /> </intent-filter> ``` 2. 在 data 标签中填写自定义的 URL Scheme。 3. 在应用程序中,可以通过 Linking 模块的 getInitialURL 方法获取启动应用程序的 URL,并通过 parse 函数解析 URL 中的参数。 示例代码: ```javascript import { Linking } from 'react-native'; Linking.getInitialURL().then(url => { if (url) { const { queryParams } = Linking.parse(url); console.log(queryParams); } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值