Compare commits
	
		
			75 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | fc8ad042cf | ||
|   | bce0dd1097 | ||
|   | ab50d4be99 | ||
|   | 8cb4dac5ae | ||
|   | 8331e3bf75 | ||
|   | e2233796f6 | ||
|   | efca2a08f8 | ||
|   | 82d3d7f978 | ||
|   | ea658b8442 | ||
|   | 53559264ff | ||
|   | 24cfa372fe | ||
|   | 31cb10be2e | ||
|   | a43106ac24 | ||
|   | 8201928a45 | ||
|   | f043dd94aa | ||
|   | 3b10f4cce8 | ||
|   | 6c496588ac | ||
|   | 19913d64ea | ||
|   | a9073920ba | ||
|   | a02615d120 | ||
|   | b92f3d6126 | ||
|   | 312d39fb96 | ||
|   | bc083b613b | ||
|   | eea02d1227 | ||
|   | dd227ce44d | ||
|   | b8f879f0c1 | ||
|   | 567257e236 | ||
|   | 688b7a526f | ||
|   | e47cf90735 | ||
|   | e931c29fa2 | ||
|   | 77b58a25c8 | ||
|   | 8917fc9576 | ||
|   | 9ee80ec7e1 | ||
|   | 2c25325334 | ||
|   | 21821b9ca7 | ||
|   | b66d7ad422 | ||
|   | 04c5bfbb6c | ||
|   | b94b32935b | ||
|   | aa4d133dc8 | ||
|   | ccdc418521 | ||
|   | 6de29d7637 | ||
|   | 3e948d1346 | ||
|   | 2f94805630 | ||
|   | e61f7e3525 | ||
|   | 18a2fdd50a | ||
|   | 35435fddd7 | ||
|   | 6d78177551 | ||
|   | 2557b6020b | ||
|   | a9e5bdb91e | ||
|   | 26adf1ac70 | ||
|   | a1ef27db98 | ||
|   | 4d23f71b5a | ||
|   | fbcb24510f | ||
|   | 16f47c70c2 | ||
|   | c29e51fd42 | ||
|   | 21e6416992 | ||
|   | 0d9d70f5cc | ||
|   | 121f52d8f6 | ||
|   | 31a4bd9c3e | ||
|   | e83aa446c7 | ||
|   | fa3fb0787b | ||
|   | 937427dbb8 | ||
|   | 1a91171e70 | ||
|   | 78344cf4d7 | ||
|   | 784d7e456b | ||
|   | c141057ee7 | ||
|   | b7ea3c0318 | ||
|   | 56d9e86d9e | ||
|   | 28c864562e | ||
|   | fbe1d4d29b | ||
|   | 74140a294e | ||
|   | 3ce5bbf8c5 | ||
|   | 134155dfd6 | ||
|   | 4cbcf61e0b | ||
|   | 8e6367223c | 
							
								
								
									
										3
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # Windows files | ||||
| [*.bat] | ||||
| end_of_line = crlf | ||||
							
								
								
									
										62
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| name: Build and Deploy Documents | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|        | ||||
| jobs: | ||||
|   build-deploy: | ||||
|     runs-on: ubuntu-18.04 | ||||
|     steps: | ||||
|     - uses: actions/checkout@master | ||||
|  | ||||
|     - name: Setup Node | ||||
|       uses: actions/setup-node@v1 | ||||
|       with: | ||||
|         node-version: 10 | ||||
|  | ||||
|     - run: npm install | ||||
|     - run: npm run build | ||||
|  | ||||
|     - name: Create Tag | ||||
|       id: create_tag | ||||
|       uses: jaywcjlove/create-tag-action@v1.3.5 | ||||
|       with: | ||||
|         package-path: ./package.json | ||||
|  | ||||
|     - name: Generate Changelog | ||||
|       id: changelog | ||||
|       uses: jaywcjlove/changelog-generator@v1.4.8 | ||||
|       with: | ||||
|         token: ${{ secrets.GITHUB_TOKEN }} | ||||
|         head-ref: ${{steps.create_tag.outputs.version}} | ||||
|         filter-author: (renovate-bot|Renovate Bot) | ||||
|         filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}' | ||||
|  | ||||
|     - name: Build and Deploy | ||||
|       uses: peaceiris/actions-gh-pages@v3 | ||||
|       with: | ||||
|         github_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|         publish_dir: ./typedoc | ||||
|  | ||||
|     - name: Create Release | ||||
|       uses: jaywcjlove/create-tag-action@v1.3.5 | ||||
|       with: | ||||
|         package-path: ./package.json | ||||
|         release: true | ||||
|         body: | | ||||
|           [](https://uiwjs.github.io/npm-unpkg/#/pkg/@uiw/react-native-alipay@${{steps.changelog.outputs.version}}/file/README.md) | ||||
|  | ||||
|           ${{ steps.changelog.outputs.compareurl }} | ||||
|            | ||||
|           ${{ steps.changelog.outputs.changelog }} | ||||
|  | ||||
|           ```bash | ||||
|           npm i @uiw/react-native-alipay@${{steps.changelog.outputs.version}} | ||||
|           ``` | ||||
|  | ||||
|     - name: 📦 @uiw/react-native-alipay publish to NPM | ||||
|       uses: JS-DevTools/npm-publish@v1 | ||||
|       with: | ||||
|         token: ${{ secrets.NPM_TOKEN }} | ||||
|         package: ./package.json | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -4,9 +4,11 @@ | ||||
|  | ||||
| # node.js | ||||
| # | ||||
| typedoc | ||||
| node_modules/ | ||||
| npm-debug.log | ||||
| yarn-error.log | ||||
| yarn.lock | ||||
|  | ||||
| # Xcode | ||||
| # | ||||
|   | ||||
							
								
								
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2020 uiw | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,14 +1,22 @@ | ||||
| @uiwjs/react-native-alipay | ||||
| === | ||||
| <p align="center"> | ||||
|   <a href="https://uiwjs.github.io/react-native-alipay/"> | ||||
|     <img src="https://user-images.githubusercontent.com/1680273/89095947-f0046900-d404-11ea-83ec-2408267efaa7.png" height="100" /> | ||||
|   </a> | ||||
|   <h1 align="center">@uiw/react-native-alipay</h1> | ||||
| <p> | ||||
|  | ||||
| [](https://npmjs.org/package/@uiwjs/react-native-alipay) | ||||
|  | ||||
| 基于 React Native 的宝支付插件,支持 iOS/Android。适用于商家在 App 应用中集成支付宝支付功能,商家 APP 调用支付宝提供的 SDK,SDK 再调用支付宝 APP 内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家 APP 内,最后展示支付结果。如果用户没有安装支付宝 APP,商家 APP 内会调起支付宝网页支付收银台,用户登录支付宝账户,支付完后展示支付结果。完整实例 [Example](./example) | ||||
| [](https://npmjs.org/package/@uiw/react-native-alipay) | ||||
|  | ||||
|  | ||||
| 基于 React Native 的宝支付插件,支持 iOS/Android。适用于商家在 App 应用中集成支付宝支付功能,商家 APP 调用支付宝提供的 SDK,SDK 再调用支付宝 APP 内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家 APP 内,最后展示支付结果。如果用户没有安装支付宝 APP,商家 APP 内会调起支付宝网页支付收银台,用户登录支付宝账户,支付完后展示支付结果。完整实例 [Example](./example) | [完整的接口文档](https://uiwjs.github.io/react-native-alipay/) | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| > ⚠️ `4.0+` 在 iOS 打包中报错,这是因为[使用阿里云产品的 SDK 出现 UTDID 冲突的问题](https://help.aliyun.com/document_detail/39984.html),在 [@EatherToo](https://github.com/EatherToo) 的帮助下([#44](https://github.com/uiwjs/react-native-alipay/pull/44)),UTDID 被剥离了。可以在 `Podfile` 中加上 `pod 'UTDID'` 解决打包失败的问题。感谢 [@abing](https://github.com/ouabing) | ||||
|  | ||||
| ## 注意事项 | ||||
|  | ||||
| 1. Android:支持2.3及以上的系统版本运行。 | ||||
| @@ -17,11 +25,13 @@ | ||||
| 4. 调试请注意 支付宝接入应用必须 `已审核通过` 状态。 | ||||
| 5. 支付宝开放平台-管理中心,签约 `APP支付` 和 `APP支付宝登录` 功能。 | ||||
| 6. 适用于 `react-native >= 0.60+` 低版本未测试。 | ||||
| 7. AlipaySDK 15.7.7 已更新到最新的支付宝 SDK 版本。 | ||||
| 8. `URL Schemes` 要以字母开头不能为纯数字。 | ||||
|  | ||||
| ## 安装依赖 | ||||
|  | ||||
| ```bash | ||||
| yarn add react-native-uiwjs-alipay | ||||
| yarn add @uiw/react-native-alipay | ||||
| # react-native version >= 0.60+ | ||||
| $ cd ios && pod install | ||||
| ``` | ||||
| @@ -32,12 +42,12 @@ $ cd ios && pod install | ||||
|  | ||||
| > `Alipay.alipay: (payInfo: string) => Promise<OrderResult>;` | ||||
|  | ||||
| - ⚠️ 注意支付成功返回结果是一个字符串,[返回内容](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/index.d.ts#L50-L74)   | ||||
| - ⚠️ 注意支付成功返回结果是一个字符串,[返回内容](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/index.d.ts#L50-L74)   | ||||
| - ⚠️ 支付宝需要设置 `Scheme` 和 iOS添加原生代码,才能支持支付和[回弹商家APP](#支付宝返回应用-ios-设置)的功能 | ||||
| - ⚠️ 支付宝 `管理中心-支付宝开放平台` 需要签约 [`APP支付`](https://opendocs.alipay.com/open/200/105310#%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8%E5%8A%9F%E8%83%BD) | ||||
|  | ||||
| ```javascript | ||||
| import Alipay from 'react-native-uiwjs-alipay'; | ||||
| import Alipay from '@uiw/react-native-alipay'; | ||||
|  | ||||
| // 设置 支付宝 URL Schemes,要表述他是宇宙唯一性,可以使用 `bundle Identifier` | ||||
| // scheme = `alipay` + `APPID`,`APPID` 为支付宝分配给开发者的应用ID | ||||
| @@ -70,7 +80,7 @@ alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=xxxxxxxxxxxxx&biz_content=%7B | ||||
| - ⚠️ 后台 SDK 根据所有数据生成 `sign`,建议通过 API 拿到这个数据,拼接数据会报错。   | ||||
| - ⚠️ `out_trade_no` 订单 id 和 `sign` 签名 是唯一的,每次不一样,需要后台生成。   | ||||
|  | ||||
| 支付返回结果,支付宝[返回结果参数说明](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/index.d.ts#L50-L74): | ||||
| 支付返回结果,支付宝[返回结果参数说明](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/index.d.ts#L50-L74): | ||||
|  | ||||
| ```json | ||||
| {  | ||||
| @@ -84,12 +94,12 @@ alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=xxxxxxxxxxxxx&biz_content=%7B | ||||
|  | ||||
| > `Alipay.authInfo: (authInfoStr: string) => Promise<AuthResult>`; | ||||
|  | ||||
| - ⚠️ 注意授权成功返回结果是一个字符串,[返回内容](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/index.d.ts#L89-L113)   | ||||
| - ⚠️ 注意授权成功返回结果是一个字符串,[返回内容](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/index.d.ts#L89-L113)   | ||||
| - ⚠️ 支付宝需要设置 `Scheme` 和 iOS添加原生代码,才能支持验证[回弹商家APP](#支付宝返回应用-ios-设置)的功能 | ||||
| - ⚠️ 支付宝 `管理中心-支付宝开放平台` 需要签约 [`APP支付宝登录`](https://opendocs.alipay.com/open/200/105310#%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8%E5%8A%9F%E8%83%BD) | ||||
|  | ||||
| ```javascript | ||||
| import Alipay from 'react-native-uiwjs-alipay'; | ||||
| import Alipay from '@uiw/react-native-alipay'; | ||||
|  | ||||
| // 设置 支付宝 URL Schemes,要表述他是宇宙唯一性,可以使用 `bundle Identifier` | ||||
| // scheme = `alipay` + `APPID`,`APPID` 为支付宝分配给开发者的应用ID | ||||
| @@ -105,7 +115,7 @@ async function authInfo() { | ||||
| } | ||||
| ``` | ||||
|  | ||||
| 授权返回结果,支付宝[返回结果参数说明](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/index.d.ts#L89-L113): | ||||
| 授权返回结果,支付宝[返回结果参数说明](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/index.d.ts#L89-L113): | ||||
|  | ||||
| ```json | ||||
| { | ||||
| @@ -120,7 +130,7 @@ async function authInfo() { | ||||
| > `Alipay.getVersion: () => Promise<string>;` | ||||
|  | ||||
| ```js | ||||
| import Alipay from 'react-native-uiwjs-alipay'; | ||||
| import Alipay from '@uiw/react-native-alipay'; | ||||
|  | ||||
| async function getVersion() { | ||||
|   const version = await Alipay.getVersion(); | ||||
| @@ -133,20 +143,20 @@ async function getVersion() { | ||||
| - ⚠️ Android 端不需要做任何设置。 | ||||
| - ⚠️ 如果用户从 `支付宝App` 跳转到 `商家APP`,是通过系统功能切换,而不是通过 `支付宝APP` 功能键返回 `商家APP`,回调函数是不起作用的,可通过 [`AppState.addEventListener`](https://github.com/uiwjs/react-native-alipay/blob/5daea87bf0af05d60d0ae9e4c04e1e2d1a6e4273/example/App.js#L8-L24) 监听事件请求后台 API,来优化这一用户体验。 | ||||
|  | ||||
| 1. 在代码中设置支付宝 [`URL Schemes`](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/example/App.js#L7),下面实例 [`uiwjspay`](https://github.com/uiwjs/react-native-alipay/commit/f6d21b6b7ec7236b195c56281f971092f3c9bb08) 是定义的 `scheme`,你也可以定义为 `alipay` + `appid`,`appid` 为支付宝分配给开发者的应用ID,用来表述 `scheme` 唯一性。 | ||||
| 1. 在代码中设置支付宝 [`URL Schemes`](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/example/App.js#L7),下面实例 [`uiwjspay`](https://github.com/uiwjs/react-native-alipay/commit/f6d21b6b7ec7236b195c56281f971092f3c9bb08) 是定义的 `scheme`,你也可以定义为 `alipay` + `appid`,`appid` 为支付宝分配给开发者的应用ID,用来表述 `scheme` 唯一性。 | ||||
|  | ||||
| ```js | ||||
| Alipay.setAlipayScheme('uiwjspay'); | ||||
| ``` | ||||
|  | ||||
| 2. 在请求支付的 [`payInfo`](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/example/App.js#L11) 中必须包含 [`return_url=uiwjspay://`](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/example/App.js#L11),`return_url` 的值为定义的 `scheme` => `uiwjspay://`,才会返回[支付宝订单支付状态结果](https://opendocs.alipay.com/open/204/105301#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E7%A4%BA%E4%BE%8B%EF%BC%88iOS%7CAndroid%EF%BC%89) | ||||
| 2. 在请求支付的 [`payInfo`](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/example/App.js#L11) 中必须包含 [`return_url=uiwjspay://`](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/example/App.js#L11),`return_url` 的值为定义的 `scheme` => `uiwjspay://`,才会返回[支付宝订单支付状态结果](https://opendocs.alipay.com/open/204/105301#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E7%A4%BA%E4%BE%8B%EF%BC%88iOS%7CAndroid%EF%BC%89) | ||||
|  | ||||
| ```js | ||||
| // payInfo 是后台拼接好的支付参数,这个参数必须包含 `return_url=uiwjspay://` | ||||
| Alipay.alipay(payInfo, (res)=>console.log(res)) | ||||
| ``` | ||||
|  | ||||
| 3. 用的 `URL Schemes` 列为白名单,在 [`ios/<应用名称>/Info.plist`](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/example/ios/example/Info.plist#L23-L41) 中添加 | ||||
| 3. 用的 `URL Schemes` 列为白名单,在 [`ios/<应用名称>/Info.plist`](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/example/ios/example/Info.plist#L23-L41) 中添加 | ||||
|  | ||||
| ```xml | ||||
| <key>LSApplicationQueriesSchemes</key> | ||||
| @@ -168,7 +178,7 @@ Alipay.alipay(payInfo, (res)=>console.log(res)) | ||||
| </array> | ||||
| ``` | ||||
|  | ||||
| 4. 修改 [`ios/<应用名称>/AppDelegate.m`](https://github.com/uiwjs/react-native-alipay/blob/05b4dc3d87ea309b6b6153690faee508cd23e2bf/example/ios/example/AppDelegate.m#L60-L70) 添加下列代码: | ||||
| 4. 修改 [`ios/<应用名称>/AppDelegate.m`](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/example/ios/example/AppDelegate.m#L60-L70) 添加下列代码: | ||||
|  | ||||
| ```objective-c | ||||
| #import <React/RCTLinkingManager.h> | ||||
| @@ -203,15 +213,25 @@ Alipay.alipay(payInfo, (res)=>console.log(res)) | ||||
| 当前工程基于 [@brodybits/create-react-native-module](https://github.com/brodybits/create-react-native-module) 初始化。 | ||||
|  | ||||
| ```bash | ||||
| npx create-react-native-module --package-identifier com.uiwjs --generate-example Alipay --example-react-native-version 0.62.2 --module-name react-native-uiwjs-alipay --github-account uiwjs --author-name "Kenny Wong" --author-email "wowohoo@qq.com" | ||||
| npx create-react-native-module --package-identifier com.uiwjs --object-class-name RNAlipay --generate-example Alipay --example-react-native-version 0.63.0 --module-name @uiw/react-native-alipay --github-account uiwjs --author-name "Kenny Wong" --author-email "wowohoo@qq.com" | ||||
| ``` | ||||
|  | ||||
| ## 开发 | ||||
|  | ||||
| ```bash | ||||
| cd example   # 进入实例 example 工程,根目录不需要安装,会引发错误 | ||||
| yarn install # 安装依赖 | ||||
|  | ||||
| cd ios     # 进入 example/ios 目录安装依赖 | ||||
| pod instll # 安装依赖 | ||||
| ``` | ||||
|  | ||||
| ## 相关连接  | ||||
|  | ||||
| - [支付宝:生成秘钥指南](https://opendocs.alipay.com/open/291/105971) | ||||
| - [支付宝:SDK 下载地址,当前使用的是 AlipaySDK	15.7.7](https://opendocs.alipay.com/open/54/104509) | ||||
| - [支付宝:SDK 下载地址,当前使用的是 AlipaySDK	15.8.03](https://opendocs.alipay.com/open/54/104509) | ||||
| - [支付宝:客户端调试工具及使用教程](https://openclub.alipay.com/club/history/read/7695) | ||||
| - [支付宝:支付,接入前准备](https://opendocs.alipay.com/open/204/105297/) | ||||
| - [支付宝:完整版授权 SDK 调用方法](https://opendocs.alipay.com/open/218/105325) | ||||
| - [支付宝:异步通知错误码: IllRet](https://opensupport.alipay.com/support/problem.htm?ant_source=antsupport) | ||||
| - [React-native 0.6版本集成支付宝-Alipay爬坑](https://segmentfault.com/a/1190000020758279) | ||||
| - [@uiw/react-native-wechat](https://github.com/uiwjs/react-native-wechat) 微信支付。 | ||||
|   | ||||
| @@ -10,17 +10,17 @@ | ||||
| //   original location: | ||||
| //   - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle | ||||
|  | ||||
| def DEFAULT_COMPILE_SDK_VERSION = 28 | ||||
| def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3' | ||||
| def DEFAULT_COMPILE_SDK_VERSION = 29 | ||||
| def DEFAULT_BUILD_TOOLS_VERSION = '29.0.3' | ||||
| def DEFAULT_MIN_SDK_VERSION = 16 | ||||
| def DEFAULT_TARGET_SDK_VERSION = 28 | ||||
| def DEFAULT_TARGET_SDK_VERSION = 29 | ||||
|  | ||||
| def safeExtGet(prop, fallback) { | ||||
|     rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback | ||||
| } | ||||
|  | ||||
| apply plugin: 'com.android.library' | ||||
| apply plugin: 'maven' | ||||
| apply plugin: 'maven-publish' | ||||
|  | ||||
| buildscript { | ||||
|     // The Android Gradle plugin is only required when opening the android folder stand-alone. | ||||
| @@ -33,14 +33,11 @@ buildscript { | ||||
|             jcenter() | ||||
|         } | ||||
|         dependencies { | ||||
|             classpath 'com.android.tools.build:gradle:3.4.1' | ||||
|             classpath("com.android.tools.build:gradle:4.1.0") | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| apply plugin: 'com.android.library' | ||||
| apply plugin: 'maven' | ||||
|  | ||||
| android { | ||||
|     compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION) | ||||
|     buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION) | ||||
| @@ -75,79 +72,6 @@ dependencies { | ||||
|     implementation 'com.facebook.react:react-native:+'  // From node_modules | ||||
|  | ||||
|     // 支付宝 SDK AAR 包所需的配置 | ||||
|     // implementation (name: 'alipaySdk-15.7.7-20200702160044', ext: 'aar') | ||||
|     implementation 'com.alipay.sdk:alipaysdk-android:15.8.10@aar' | ||||
|     implementation fileTree(dir: "libs", include: ["*.aar"]) | ||||
| } | ||||
|  | ||||
| def configureReactNativePom(def pom) { | ||||
|     def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text) | ||||
|  | ||||
|     pom.project { | ||||
|         name packageJson.title | ||||
|         artifactId packageJson.name | ||||
|         version = packageJson.version | ||||
|         group = "com.uiwjs" | ||||
|         description packageJson.description | ||||
|         url packageJson.repository.baseUrl | ||||
|  | ||||
|         licenses { | ||||
|             license { | ||||
|                 name packageJson.license | ||||
|                 url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename | ||||
|                 distribution 'repo' | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         developers { | ||||
|             developer { | ||||
|                 id packageJson.author.username | ||||
|                 name packageJson.author.name | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| afterEvaluate { project -> | ||||
|     // some Gradle build hooks ref: | ||||
|     // https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html | ||||
|     task androidJavadoc(type: Javadoc) { | ||||
|         source = android.sourceSets.main.java.srcDirs | ||||
|         classpath += files(android.bootClasspath) | ||||
|         classpath += files(project.getConfigurations().getByName('compile').asList()) | ||||
|         include '**/*.java' | ||||
|     } | ||||
|  | ||||
|     task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) { | ||||
|         classifier = 'javadoc' | ||||
|         from androidJavadoc.destinationDir | ||||
|     } | ||||
|  | ||||
|     task androidSourcesJar(type: Jar) { | ||||
|         classifier = 'sources' | ||||
|         from android.sourceSets.main.java.srcDirs | ||||
|         include '**/*.java' | ||||
|     } | ||||
|  | ||||
|     android.libraryVariants.all { variant -> | ||||
|         def name = variant.name.capitalize() | ||||
|         def javaCompileTask = variant.javaCompileProvider.get() | ||||
|  | ||||
|         task "jar${name}"(type: Jar, dependsOn: javaCompileTask) { | ||||
|             from javaCompileTask.destinationDir | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     artifacts { | ||||
|         archives androidSourcesJar | ||||
|         archives androidJavadocJar | ||||
|     } | ||||
|  | ||||
|     task installArchives(type: Upload) { | ||||
|         configuration = configurations.archives | ||||
|         repositories.mavenDeployer { | ||||
|             // Deploy to react-native-event-bridge/maven, ready to publish to npm | ||||
|             repository url: "file://${projectDir}/../android/maven" | ||||
|             configureReactNativePom pom | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,5 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|           package="com.uiwjs"> | ||||
|           package="com.uiwjs.alipay"> | ||||
|  | ||||
|     <uses-permission android:name="android.permission.INTERNET" /> | ||||
|     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||||
|   | ||||
| @@ -1,31 +1,31 @@ | ||||
| package com.uiwjs; | ||||
| package com.uiwjs.alipay; | ||||
| 
 | ||||
| import com.alipay.sdk.app.AuthTask; | ||||
| import com.alipay.sdk.app.PayTask; | ||||
| import com.alipay.sdk.app.EnvUtils; | ||||
| import com.facebook.react.bridge.Arguments; | ||||
| import com.facebook.react.bridge.Promise; | ||||
| import com.facebook.react.bridge.ReactApplicationContext; | ||||
| import com.facebook.react.bridge.ReactContextBaseJavaModule; | ||||
| import com.facebook.react.bridge.ReactMethod; | ||||
| import com.facebook.react.bridge.ReadableMap; | ||||
| import com.facebook.react.bridge.WritableMap; | ||||
| import com.facebook.react.bridge.Callback; | ||||
| import com.facebook.react.bridge.Promise; | ||||
| // import com.facebook.react.bridge.Callback; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class AlipayModule extends ReactContextBaseJavaModule { | ||||
| public class RNAlipayModule extends ReactContextBaseJavaModule { | ||||
| 
 | ||||
|     private final ReactApplicationContext reactContext; | ||||
| 
 | ||||
|     public AlipayModule(ReactApplicationContext reactContext) { | ||||
|     public RNAlipayModule(ReactApplicationContext reactContext) { | ||||
|         super(reactContext); | ||||
|         this.reactContext = reactContext; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return "Alipay"; | ||||
|         return "RNAlipay"; | ||||
|     } | ||||
| 
 | ||||
|     // @ReactMethod | ||||
| @@ -1,4 +1,4 @@ | ||||
| package com.uiwjs; | ||||
| package com.uiwjs.alipay; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| import java.util.Collections; | ||||
| @@ -10,10 +10,10 @@ import com.facebook.react.bridge.ReactApplicationContext; | ||||
| import com.facebook.react.uimanager.ViewManager; | ||||
| import com.facebook.react.bridge.JavaScriptModule; | ||||
| 
 | ||||
| public class AlipayPackage implements ReactPackage { | ||||
| public class RNAlipayPackage implements ReactPackage { | ||||
|     @Override | ||||
|     public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { | ||||
|         return Arrays.<NativeModule>asList(new AlipayModule(reactContext)); | ||||
|         return Arrays.<NativeModule>asList(new RNAlipayModule(reactContext)); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @@ -8,13 +8,11 @@ | ||||
| ; Ignore polyfills | ||||
| node_modules/react-native/Libraries/polyfills/.* | ||||
|  | ||||
| ; These should not be required directly | ||||
| ; require from fbjs/lib instead: require('fbjs/lib/warning') | ||||
| node_modules/warning/.* | ||||
|  | ||||
| ; Flow doesn't support platforms | ||||
| .*/Libraries/Utilities/LoadingView.js | ||||
|  | ||||
| .*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$ | ||||
|  | ||||
| [untyped] | ||||
| .*/node_modules/@react-native-community/cli/.*/.* | ||||
|  | ||||
| @@ -27,8 +25,9 @@ node_modules/react-native/flow/ | ||||
| [options] | ||||
| emoji=true | ||||
|  | ||||
| esproposal.optional_chaining=enable | ||||
| esproposal.nullish_coalescing=enable | ||||
| exact_by_default=true | ||||
|  | ||||
| format.bracket_spacing=false | ||||
|  | ||||
| module.file_ext=.js | ||||
| module.file_ext=.json | ||||
| @@ -44,10 +43,6 @@ suppress_type=$FlowFixMe | ||||
| suppress_type=$FlowFixMeProps | ||||
| suppress_type=$FlowFixMeState | ||||
|  | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError | ||||
|  | ||||
| [lints] | ||||
| sketchy-null-number=warn | ||||
| sketchy-null-mixed=warn | ||||
| @@ -56,10 +51,7 @@ untyped-type-import=warn | ||||
| nonstrict-import=warn | ||||
| deprecated-type=warn | ||||
| unsafe-getters-setters=warn | ||||
| inexact-spread=warn | ||||
| unnecessary-invariant=warn | ||||
| signature-verification-failure=warn | ||||
| deprecated-utility=error | ||||
|  | ||||
| [strict] | ||||
| deprecated-type | ||||
| @@ -71,4 +63,4 @@ untyped-import | ||||
| untyped-type-import | ||||
|  | ||||
| [version] | ||||
| ^0.113.0 | ||||
| ^0.176.3 | ||||
|   | ||||
							
								
								
									
										4
									
								
								example/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								example/.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,3 @@ | ||||
| *.pbxproj -text | ||||
| # Windows files should use crlf line endings | ||||
| # https://help.github.com/articles/dealing-with-line-endings/ | ||||
| *.bat text eol=crlf | ||||
|   | ||||
							
								
								
									
										12
									
								
								example/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								example/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -20,6 +20,7 @@ DerivedData | ||||
| *.hmap | ||||
| *.ipa | ||||
| *.xcuserstate | ||||
| ios/.xcode.env.local | ||||
|  | ||||
| # Android/IntelliJ | ||||
| # | ||||
| @@ -28,6 +29,7 @@ build/ | ||||
| .gradle | ||||
| local.properties | ||||
| *.iml | ||||
| *.hprof | ||||
|  | ||||
| # node.js | ||||
| # | ||||
| @@ -48,12 +50,14 @@ buck-out/ | ||||
| # For more information about the recommended setup visit: | ||||
| # https://docs.fastlane.tools/best-practices/source-control/ | ||||
|  | ||||
| */fastlane/report.xml | ||||
| */fastlane/Preview.html | ||||
| */fastlane/screenshots | ||||
| **/fastlane/report.xml | ||||
| **/fastlane/Preview.html | ||||
| **/fastlane/screenshots | ||||
| **/fastlane/test_output | ||||
|  | ||||
| # Bundle artifact | ||||
| *.jsbundle | ||||
|  | ||||
| # CocoaPods | ||||
| # Ruby / CocoaPods | ||||
| /ios/Pods/ | ||||
| /vendor/bundle/ | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| module.exports = { | ||||
|   arrowParens: 'avoid', | ||||
|   bracketSameLine: true, | ||||
|   bracketSpacing: false, | ||||
|   jsxBracketSameLine: true, | ||||
|   singleQuote: true, | ||||
|   trailingComma: 'all', | ||||
| }; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import React, { Component } from 'react'; | ||||
| import { Button, StyleSheet, Text, View, Linking, AppState } from 'react-native'; | ||||
| import Alipay from '@uiwjs/react-native-alipay'; | ||||
| import { StyleSheet, Button, Text, View, Linking, AppState } from 'react-native'; | ||||
| import Alipay from '@uiw/react-native-alipay'; | ||||
|  | ||||
| export default class App extends Component { | ||||
|   constructor(props) { | ||||
| @@ -13,21 +13,33 @@ export default class App extends Component { | ||||
|     Alipay.setAlipayScheme('uiwjspay'); | ||||
|   } | ||||
|   aliPay = async () => { | ||||
|     // return_url= | ||||
|     const payInfo = 'alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021001172656340&biz_content=%7B%22out_trade_no%22%3A%221111112222222%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221234%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fane.boshu.ltd%2Fowner%2Fpay%2Fapi%2FownerPay%2Fcallback&sign=oUQmGtkv8mrhJ0YwHl9%2FfxMcoLACWuSFKiMTC4Id8nc%2FZVvDQ6MLQq5hhtEN03Qn1%2BAtzTAaofE8nNixdroxOek2l5YtOAcYcXVYlJIyogN%2B22erN2NpDTWJ7tQTKgYFDJLRiG0DZJaxfADhUUF6UR9kdA8omoXKLDlP17ZPUs5Jr4aKv5HJtH5C53ui7PbmyWYg934L4UDC2F%2F9pPQlRwwDeE1SAaV3HW9Dt83kK52o8%2FlChXdotbFdAvH0d4qYGhpEYU5sepj9xiOMyL9aC4pMXW9INYLLGbvtqtlRchZTAfH5yji6nqqQm9KKMmcVrWdBDLyjFVNpejq1UjbJBw%3D%3D&sign_type=RSA2×tamp=2020-07-09+12%3A16%3A16&version=1.0'; | ||||
|     const resule = await Alipay.alipay(payInfo); | ||||
|     console.log('alipay:resule-->>>', resule); | ||||
|     try { | ||||
|       // return_url= | ||||
|       const payInfo = 'alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021001172656340&biz_content=%7B%22out_trade_no%22%3A%221111112222222%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221234%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fane.boshu.ltd%2Fowner%2Fpay%2Fapi%2FownerPay%2Fcallback&sign=oUQmGtkv8mrhJ0YwHl9%2FfxMcoLACWuSFKiMTC4Id8nc%2FZVvDQ6MLQq5hhtEN03Qn1%2BAtzTAaofE8nNixdroxOek2l5YtOAcYcXVYlJIyogN%2B22erN2NpDTWJ7tQTKgYFDJLRiG0DZJaxfADhUUF6UR9kdA8omoXKLDlP17ZPUs5Jr4aKv5HJtH5C53ui7PbmyWYg934L4UDC2F%2F9pPQlRwwDeE1SAaV3HW9Dt83kK52o8%2FlChXdotbFdAvH0d4qYGhpEYU5sepj9xiOMyL9aC4pMXW9INYLLGbvtqtlRchZTAfH5yji6nqqQm9KKMmcVrWdBDLyjFVNpejq1UjbJBw%3D%3D&sign_type=RSA2×tamp=2020-07-09+12%3A16%3A16&version=1.0'; | ||||
|       const resule = await Alipay.alipay(payInfo); | ||||
|       console.log('alipay:resule-->>>', resule); | ||||
|     } catch (error) { | ||||
|       console.log('alipay:error-->>>', error); | ||||
|     } | ||||
|   } | ||||
|   authInfo = async () => { | ||||
|     const authInfoStr = 'app_name=mc&auth_type=AUTHACCOUNT&apiname=com.alipay.account.auth&biz_type=openservice&product_id=APP_FAST_LOGIN&scope=kuaijie&pid=2088421915791034&target_id=15946456110003465&app_id=2021001172656340&sign_type=RSA2&sign=keluG28qbbLwAcSDI4VmCNOGHJoF3xgpVeqXu1nCBCYo%2FlYYGe00fTfV9L4G73Sk7%2B4IwK%2BZV8IL%2F04cVtk6SR74lKAR3rYOoUdQ09ZrZFuQoUkO0vekajhp75IDQIg6PedCyY0SjFTqrHlH%2FImscBwitxrlSc9YbN7uW0gY34K8t7v8NhDoqzKJeoIz43UxF5U1DpUA1ISBVxwO7du1t6rYltsRhReayPS3hnvmwYSKQZUEgBvJ%2BT2XdyCaz%2FdGV907lYagPp1Oxkoaj%2FvW5NjNsRnid7vH944CoFj9XtBK%2FNTk2tBPTHFxYRQTEG1PkgkBohGpAWOFGGOuapH0ag%3D%3D'; | ||||
|     const resule = await Alipay.authInfo(authInfoStr); | ||||
|     // resule => success=true&auth_code=9c11732de44f4f1790b63978b6fbOX53&result_code=200&alipay_open_id=20881001757376426161095132517425&user_id=2088003646494707 | ||||
|     console.log('authInfo:resule-->>>', resule); | ||||
|     try { | ||||
|       const authInfoStr = 'app_name=mc&auth_type=AUTHACCOUNT&apiname=com.alipay.account.auth&biz_type=openservice&product_id=APP_FAST_LOGIN&scope=kuaijie&pid=2088421915791034&target_id=15946456110003465&app_id=2021001172656340&sign_type=RSA2&sign=keluG28qbbLwAcSDI4VmCNOGHJoF3xgpVeqXu1nCBCYo%2FlYYGe00fTfV9L4G73Sk7%2B4IwK%2BZV8IL%2F04cVtk6SR74lKAR3rYOoUdQ09ZrZFuQoUkO0vekajhp75IDQIg6PedCyY0SjFTqrHlH%2FImscBwitxrlSc9YbN7uW0gY34K8t7v8NhDoqzKJeoIz43UxF5U1DpUA1ISBVxwO7du1t6rYltsRhReayPS3hnvmwYSKQZUEgBvJ%2BT2XdyCaz%2FdGV907lYagPp1Oxkoaj%2FvW5NjNsRnid7vH944CoFj9XtBK%2FNTk2tBPTHFxYRQTEG1PkgkBohGpAWOFGGOuapH0ag%3D%3D'; | ||||
|       const resule = await Alipay.authInfo(authInfoStr); | ||||
|       // resule => success=true&auth_code=9c11732de44f4f1790b63978b6fbOX53&result_code=200&alipay_open_id=20881001757376426161095132517425&user_id=2088003646494707 | ||||
|       console.log('authInfo:resule-->>>', resule); | ||||
|     } catch (error) { | ||||
|       console.log('authInfo:error-->>>', error); | ||||
|     } | ||||
|   } | ||||
|   getVersion = async () => { | ||||
|     const version = await Alipay.getVersion(); | ||||
|     this.setState({ version }); | ||||
|     console.log('version:', version); | ||||
|     try { | ||||
|       const version = await Alipay.getVersion(); | ||||
|       this.setState({ version }); | ||||
|       console.log('getVersion:', version); | ||||
|     } catch (error) { | ||||
|       console.log('getVersion:error-->>>', error); | ||||
|     } | ||||
|   } | ||||
|   render() { | ||||
|     return ( | ||||
| @@ -68,9 +80,4 @@ const styles = StyleSheet.create({ | ||||
|     textAlign: 'center', | ||||
|     margin: 10, | ||||
|   }, | ||||
|   instructions: { | ||||
|     textAlign: 'center', | ||||
|     color: '#333333', | ||||
|     marginBottom: 5, | ||||
|   }, | ||||
| }); | ||||
|   | ||||
| @@ -35,12 +35,12 @@ android_library( | ||||
|  | ||||
| android_build_config( | ||||
|     name = "build_config", | ||||
|     package = "com.example", | ||||
|     package = "com.uiwjs.example.alipay", | ||||
| ) | ||||
|  | ||||
| android_resource( | ||||
|     name = "res", | ||||
|     package = "com.example", | ||||
|     package = "com.uiwjs.example.alipay", | ||||
|     res = "src/main/res", | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -20,7 +20,7 @@ import com.android.build.OutputFile | ||||
|  *   // default. Can be overridden with ENTRY_FILE environment variable. | ||||
|  *   entryFile: "index.android.js", | ||||
|  * | ||||
|  *   // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format | ||||
|  *   // https://reactnative.dev/docs/performance#enable-the-ram-format | ||||
|  *   bundleCommand: "ram-bundle", | ||||
|  * | ||||
|  *   // whether to bundle JS and assets in debug mode | ||||
| @@ -114,33 +114,107 @@ def jscFlavor = 'org.webkit:android-jsc:+' | ||||
| /** | ||||
|  * Whether to enable the Hermes VM. | ||||
|  * | ||||
|  * This should be set on project.ext.react and mirrored here.  If it is not set | ||||
|  * This should be set on project.ext.react and that value will be read here. If it is not set | ||||
|  * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode | ||||
|  * and the benefits of using Hermes will therefore be sharply reduced. | ||||
|  */ | ||||
| def enableHermes = project.ext.react.get("enableHermes", false); | ||||
|  | ||||
| /** | ||||
|  * Architectures to build native code for. | ||||
|  */ | ||||
| def reactNativeArchitectures() { | ||||
|     def value = project.getProperties().get("reactNativeArchitectures") | ||||
|     return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] | ||||
| } | ||||
|  | ||||
| android { | ||||
|     ndkVersion rootProject.ext.ndkVersion | ||||
|  | ||||
|     compileSdkVersion rootProject.ext.compileSdkVersion | ||||
|  | ||||
|     compileOptions { | ||||
|         sourceCompatibility JavaVersion.VERSION_1_8 | ||||
|         targetCompatibility JavaVersion.VERSION_1_8 | ||||
|     } | ||||
|  | ||||
|     defaultConfig { | ||||
|         applicationId "com.example" | ||||
|         applicationId "com.uiwjs.example.alipay" | ||||
|         minSdkVersion rootProject.ext.minSdkVersion | ||||
|         targetSdkVersion rootProject.ext.targetSdkVersion | ||||
|         versionCode 1 | ||||
|         versionName "1.0" | ||||
|         buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() | ||||
|  | ||||
|         if (isNewArchitectureEnabled()) { | ||||
|             // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||||
|             externalNativeBuild { | ||||
|                 ndkBuild { | ||||
|                     arguments "APP_PLATFORM=android-21", | ||||
|                         "APP_STL=c++_shared", | ||||
|                         "NDK_TOOLCHAIN_VERSION=clang", | ||||
|                         "GENERATED_SRC_DIR=$buildDir/generated/source", | ||||
|                         "PROJECT_BUILD_DIR=$buildDir", | ||||
|                         "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", | ||||
|                         "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build", | ||||
|                         "NODE_MODULES_DIR=$rootDir/../node_modules" | ||||
|                     cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" | ||||
|                     cppFlags "-std=c++17" | ||||
|                     // Make sure this target name is the same you specify inside the | ||||
|                     // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. | ||||
|                     targets "example_appmodules" | ||||
|                 } | ||||
|             } | ||||
|             if (!enableSeparateBuildPerCPUArchitecture) { | ||||
|                 ndk { | ||||
|                     abiFilters (*reactNativeArchitectures()) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (isNewArchitectureEnabled()) { | ||||
|         // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||||
|         externalNativeBuild { | ||||
|             ndkBuild { | ||||
|                 path "$projectDir/src/main/jni/Android.mk" | ||||
|             } | ||||
|         } | ||||
|         def reactAndroidProjectDir = project(':ReactAndroid').projectDir | ||||
|         def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { | ||||
|             dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") | ||||
|             from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||||
|             into("$buildDir/react-ndk/exported") | ||||
|         } | ||||
|         def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { | ||||
|             dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") | ||||
|             from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||||
|             into("$buildDir/react-ndk/exported") | ||||
|         } | ||||
|         afterEvaluate { | ||||
|             // If you wish to add a custom TurboModule or component locally, | ||||
|             // you should uncomment this line. | ||||
|             // preBuild.dependsOn("generateCodegenArtifactsFromSchema") | ||||
|             preDebugBuild.dependsOn(packageReactNdkDebugLibs) | ||||
|             preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) | ||||
|  | ||||
|             // Due to a bug inside AGP, we have to explicitly set a dependency | ||||
|             // between configureNdkBuild* tasks and the preBuild tasks. | ||||
|             // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 | ||||
|             configureNdkBuildRelease.dependsOn(preReleaseBuild) | ||||
|             configureNdkBuildDebug.dependsOn(preDebugBuild) | ||||
|             reactNativeArchitectures().each { architecture -> | ||||
|                 tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { | ||||
|                     dependsOn("preDebugBuild") | ||||
|                 } | ||||
|                 tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { | ||||
|                     dependsOn("preReleaseBuild") | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     splits { | ||||
|         abi { | ||||
|             reset() | ||||
|             enable enableSeparateBuildPerCPUArchitecture | ||||
|             universalApk false  // If true, also generate a universal APK | ||||
|             include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" | ||||
|             include (*reactNativeArchitectures()) | ||||
|         } | ||||
|     } | ||||
|     signingConfigs { | ||||
| @@ -157,30 +231,24 @@ android { | ||||
|         } | ||||
|         release { | ||||
|             // Caution! In production, you need to generate your own keystore file. | ||||
|             // see https://facebook.github.io/react-native/docs/signed-apk-android. | ||||
|             // see https://reactnative.dev/docs/signed-apk-android. | ||||
|             signingConfig signingConfigs.debug | ||||
|             minifyEnabled enableProguardInReleaseBuilds | ||||
|             proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     packagingOptions { | ||||
|         pickFirst "lib/armeabi-v7a/libc++_shared.so" | ||||
|         pickFirst "lib/arm64-v8a/libc++_shared.so" | ||||
|         pickFirst "lib/x86/libc++_shared.so" | ||||
|         pickFirst "lib/x86_64/libc++_shared.so" | ||||
|     } | ||||
|  | ||||
|     // applicationVariants are e.g. debug, release | ||||
|     applicationVariants.all { variant -> | ||||
|         variant.outputs.each { output -> | ||||
|             // For each separate APK per architecture, set a unique version code as described here: | ||||
|             // https://developer.android.com/studio/build/configure-apk-splits.html | ||||
|             // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. | ||||
|             def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] | ||||
|             def abi = output.getFilter(OutputFile.ABI) | ||||
|             if (abi != null) {  // null for the universal-debug, universal-release variants | ||||
|                 output.versionCodeOverride = | ||||
|                         versionCodes.get(abi) * 1048576 + defaultConfig.versionCode | ||||
|                         defaultConfig.versionCode * 1000 + versionCodes.get(abi) | ||||
|             } | ||||
|  | ||||
|         } | ||||
| @@ -189,17 +257,19 @@ android { | ||||
|  | ||||
| dependencies { | ||||
|     implementation fileTree(dir: "libs", include: ["*.jar"]) | ||||
|  | ||||
|     //noinspection GradleDynamicVersion | ||||
|     implementation "com.facebook.react:react-native:+"  // From node_modules | ||||
|  | ||||
|     implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" | ||||
|  | ||||
|     debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { | ||||
|       exclude group:'com.facebook.fbjni' | ||||
|         exclude group:'com.facebook.fbjni' | ||||
|     } | ||||
|  | ||||
|     debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { | ||||
|         exclude group:'com.facebook.flipper' | ||||
|         exclude group:'com.squareup.okhttp3', module:'okhttp' | ||||
|     } | ||||
|  | ||||
|     debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { | ||||
| @@ -207,19 +277,44 @@ dependencies { | ||||
|     } | ||||
|  | ||||
|     if (enableHermes) { | ||||
|         def hermesPath = "../../node_modules/hermes-engine/android/"; | ||||
|         debugImplementation files(hermesPath + "hermes-debug.aar") | ||||
|         releaseImplementation files(hermesPath + "hermes-release.aar") | ||||
|         //noinspection GradleDynamicVersion | ||||
|         implementation("com.facebook.react:hermes-engine:+") { // From node_modules | ||||
|             exclude group:'com.facebook.fbjni' | ||||
|         } | ||||
|     } else { | ||||
|         implementation jscFlavor | ||||
|     } | ||||
| } | ||||
|  | ||||
| if (isNewArchitectureEnabled()) { | ||||
|     // If new architecture is enabled, we let you build RN from source | ||||
|     // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. | ||||
|     // This will be applied to all the imported transtitive dependency. | ||||
|     configurations.all { | ||||
|         resolutionStrategy.dependencySubstitution { | ||||
|             substitute(module("com.facebook.react:react-native")) | ||||
|                     .using(project(":ReactAndroid")) | ||||
|                     .because("On New Architecture we're building React Native from source") | ||||
|             substitute(module("com.facebook.react:hermes-engine")) | ||||
|                     .using(project(":ReactAndroid:hermes-engine")) | ||||
|                     .because("On New Architecture we're building Hermes from source") | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // Run this once to be able to run the application with BUCK | ||||
| // puts all compile dependencies into folder libs for BUCK to use | ||||
| task copyDownloadableDepsToLibs(type: Copy) { | ||||
|     from configurations.compile | ||||
|     from configurations.implementation | ||||
|     into 'libs' | ||||
| } | ||||
|  | ||||
| apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | ||||
|  | ||||
| def isNewArchitectureEnabled() { | ||||
|     // To opt-in for the New Architecture, you can either: | ||||
|     // - Set `newArchEnabled` to true inside the `gradle.properties` file | ||||
|     // - Invoke gradle with `-newArchEnabled=true` | ||||
|     // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` | ||||
|     return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" | ||||
| } | ||||
|   | ||||
| @@ -4,5 +4,10 @@ | ||||
|  | ||||
|     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> | ||||
|  | ||||
|     <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" /> | ||||
|     <application | ||||
|         android:usesCleartextTraffic="true" | ||||
|         tools:targetApi="28" | ||||
|         tools:ignore="GoogleAppIndexingWarning"> | ||||
|         <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" /> | ||||
|     </application> | ||||
| </manifest> | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /** | ||||
|  * Copyright (c) Facebook, Inc. and its affiliates. | ||||
|  * Copyright (c) Meta Platforms, Inc. and affiliates. | ||||
|  * | ||||
|  * <p>This source code is licensed under the MIT license found in the LICENSE file in the root | ||||
|  * directory of this source tree. | ||||
|  */ | ||||
| package com.example; | ||||
| package com.uiwjs.example.alipay; | ||||
|  | ||||
| import android.content.Context; | ||||
| import com.facebook.flipper.android.AndroidFlipperClient; | ||||
| @@ -19,6 +19,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; | ||||
| import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; | ||||
| import com.facebook.flipper.plugins.react.ReactFlipperPlugin; | ||||
| import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; | ||||
| import com.facebook.react.ReactInstanceEventListener; | ||||
| import com.facebook.react.ReactInstanceManager; | ||||
| import com.facebook.react.bridge.ReactContext; | ||||
| import com.facebook.react.modules.network.NetworkingModule; | ||||
| @@ -51,7 +52,7 @@ public class ReactNativeFlipper { | ||||
|       ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); | ||||
|       if (reactContext == null) { | ||||
|         reactInstanceManager.addReactInstanceEventListener( | ||||
|             new ReactInstanceManager.ReactInstanceEventListener() { | ||||
|             new ReactInstanceEventListener() { | ||||
|               @Override | ||||
|               public void onReactContextInitialized(ReactContext reactContext) { | ||||
|                 reactInstanceManager.removeReactInstanceEventListener(this); | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|   package="com.example"> | ||||
|   package="com.uiwjs.example.alipay"> | ||||
|  | ||||
|     <uses-permission android:name="android.permission.INTERNET" /> | ||||
|     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||||
|     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | ||||
|  | ||||
|     <application | ||||
|       android:name=".MainApplication" | ||||
| @@ -15,15 +13,14 @@ | ||||
|       <activity | ||||
|         android:name=".MainActivity" | ||||
|         android:label="@string/app_name" | ||||
|         android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" | ||||
|         android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||||
|         android:launchMode="singleTask" | ||||
|         android:windowSoftInputMode="adjustResize"> | ||||
|         android:windowSoftInputMode="adjustResize" | ||||
|         android:exported="true"> | ||||
|         <intent-filter> | ||||
|             <action android:name="android.intent.action.MAIN" /> | ||||
|             <category android:name="android.intent.category.LAUNCHER" /> | ||||
|         </intent-filter> | ||||
|       </activity> | ||||
|       <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> | ||||
|     </application> | ||||
|  | ||||
| </manifest> | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| package com.example; | ||||
| package com.uiwjs.example.alipay; | ||||
|  | ||||
| import com.facebook.react.ReactActivity; | ||||
| import com.facebook.react.ReactActivityDelegate; | ||||
| import com.facebook.react.ReactRootView; | ||||
|  | ||||
| public class MainActivity extends ReactActivity { | ||||
|  | ||||
| @@ -12,4 +14,35 @@ public class MainActivity extends ReactActivity { | ||||
|   protected String getMainComponentName() { | ||||
|     return "example"; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and | ||||
|    * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer | ||||
|    * (Paper). | ||||
|    */ | ||||
|   @Override | ||||
|   protected ReactActivityDelegate createReactActivityDelegate() { | ||||
|     return new MainActivityDelegate(this, getMainComponentName()); | ||||
|   } | ||||
|  | ||||
|   public static class MainActivityDelegate extends ReactActivityDelegate { | ||||
|     public MainActivityDelegate(ReactActivity activity, String mainComponentName) { | ||||
|       super(activity, mainComponentName); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected ReactRootView createRootView() { | ||||
|       ReactRootView reactRootView = new ReactRootView(getContext()); | ||||
|       // If you opted-in for the New Architecture, we enable the Fabric Renderer. | ||||
|       reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); | ||||
|       return reactRootView; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected boolean isConcurrentRootEnabled() { | ||||
|       // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). | ||||
|       // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html | ||||
|       return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| package com.example; | ||||
| package com.uiwjs.example.alipay; | ||||
|  | ||||
| import android.app.Application; | ||||
| import android.content.Context; | ||||
| @@ -7,7 +7,9 @@ import com.facebook.react.ReactApplication; | ||||
| import com.facebook.react.ReactInstanceManager; | ||||
| import com.facebook.react.ReactNativeHost; | ||||
| import com.facebook.react.ReactPackage; | ||||
| import com.facebook.react.config.ReactFeatureFlags; | ||||
| import com.facebook.soloader.SoLoader; | ||||
| import com.uiwjs.example.alipay.newarchitecture.MainApplicationReactNativeHost; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.List; | ||||
|  | ||||
| @@ -35,14 +37,23 @@ public class MainApplication extends Application implements ReactApplication { | ||||
|         } | ||||
|       }; | ||||
|  | ||||
|   private final ReactNativeHost mNewArchitectureNativeHost = | ||||
|       new MainApplicationReactNativeHost(this); | ||||
|  | ||||
|   @Override | ||||
|   public ReactNativeHost getReactNativeHost() { | ||||
|     return mReactNativeHost; | ||||
|     if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { | ||||
|       return mNewArchitectureNativeHost; | ||||
|     } else { | ||||
|       return mReactNativeHost; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public void onCreate() { | ||||
|     super.onCreate(); | ||||
|     // If you opted-in for the New Architecture, we enable the TurboModule system | ||||
|     ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; | ||||
|     SoLoader.init(this, /* native exopackage */ false); | ||||
|     initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||||
|   } | ||||
| @@ -62,7 +73,7 @@ public class MainApplication extends Application implements ReactApplication { | ||||
|          We use reflection here to pick up the class that initializes Flipper, | ||||
|         since Flipper library is not available in release mode | ||||
|         */ | ||||
|         Class<?> aClass = Class.forName("com.example.ReactNativeFlipper"); | ||||
|         Class<?> aClass = Class.forName("com.uiwjs.example.alipay.ReactNativeFlipper"); | ||||
|         aClass | ||||
|             .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) | ||||
|             .invoke(null, context, reactInstanceManager); | ||||
|   | ||||
| @@ -0,0 +1,116 @@ | ||||
| package com.uiwjs.example.alipay.newarchitecture; | ||||
|  | ||||
| import android.app.Application; | ||||
| import androidx.annotation.NonNull; | ||||
| import com.facebook.react.PackageList; | ||||
| import com.facebook.react.ReactInstanceManager; | ||||
| import com.facebook.react.ReactNativeHost; | ||||
| import com.facebook.react.ReactPackage; | ||||
| import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||||
| import com.facebook.react.bridge.JSIModulePackage; | ||||
| import com.facebook.react.bridge.JSIModuleProvider; | ||||
| import com.facebook.react.bridge.JSIModuleSpec; | ||||
| import com.facebook.react.bridge.JSIModuleType; | ||||
| import com.facebook.react.bridge.JavaScriptContextHolder; | ||||
| import com.facebook.react.bridge.ReactApplicationContext; | ||||
| import com.facebook.react.bridge.UIManager; | ||||
| import com.facebook.react.fabric.ComponentFactory; | ||||
| import com.facebook.react.fabric.CoreComponentsRegistry; | ||||
| import com.facebook.react.fabric.FabricJSIModuleProvider; | ||||
| import com.facebook.react.fabric.ReactNativeConfig; | ||||
| import com.facebook.react.uimanager.ViewManagerRegistry; | ||||
| import com.uiwjs.example.alipay.BuildConfig; | ||||
| import com.uiwjs.example.alipay.newarchitecture.components.MainComponentsRegistry; | ||||
| import com.uiwjs.example.alipay.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both | ||||
|  * TurboModule delegates and the Fabric Renderer. | ||||
|  * | ||||
|  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||
|  * `newArchEnabled` property). Is ignored otherwise. | ||||
|  */ | ||||
| public class MainApplicationReactNativeHost extends ReactNativeHost { | ||||
|   public MainApplicationReactNativeHost(Application application) { | ||||
|     super(application); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public boolean getUseDeveloperSupport() { | ||||
|     return BuildConfig.DEBUG; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected List<ReactPackage> getPackages() { | ||||
|     List<ReactPackage> packages = new PackageList(this).getPackages(); | ||||
|     // Packages that cannot be autolinked yet can be added manually here, for example: | ||||
|     //     packages.add(new MyReactNativePackage()); | ||||
|     // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: | ||||
|     //     packages.add(new TurboReactPackage() { ... }); | ||||
|     // If you have custom Fabric Components, their ViewManagers should also be loaded here | ||||
|     // inside a ReactPackage. | ||||
|     return packages; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected String getJSMainModuleName() { | ||||
|     return "index"; | ||||
|   } | ||||
|  | ||||
|   @NonNull | ||||
|   @Override | ||||
|   protected ReactPackageTurboModuleManagerDelegate.Builder | ||||
|       getReactPackageTurboModuleManagerDelegateBuilder() { | ||||
|     // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary | ||||
|     // for the new architecture and to use TurboModules correctly. | ||||
|     return new MainApplicationTurboModuleManagerDelegate.Builder(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected JSIModulePackage getJSIModulePackage() { | ||||
|     return new JSIModulePackage() { | ||||
|       @Override | ||||
|       public List<JSIModuleSpec> getJSIModules( | ||||
|           final ReactApplicationContext reactApplicationContext, | ||||
|           final JavaScriptContextHolder jsContext) { | ||||
|         final List<JSIModuleSpec> specs = new ArrayList<>(); | ||||
|  | ||||
|         // Here we provide a new JSIModuleSpec that will be responsible of providing the | ||||
|         // custom Fabric Components. | ||||
|         specs.add( | ||||
|             new JSIModuleSpec() { | ||||
|               @Override | ||||
|               public JSIModuleType getJSIModuleType() { | ||||
|                 return JSIModuleType.UIManager; | ||||
|               } | ||||
|  | ||||
|               @Override | ||||
|               public JSIModuleProvider<UIManager> getJSIModuleProvider() { | ||||
|                 final ComponentFactory componentFactory = new ComponentFactory(); | ||||
|                 CoreComponentsRegistry.register(componentFactory); | ||||
|  | ||||
|                 // Here we register a Components Registry. | ||||
|                 // The one that is generated with the template contains no components | ||||
|                 // and just provides you the one from React Native core. | ||||
|                 MainComponentsRegistry.register(componentFactory); | ||||
|  | ||||
|                 final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); | ||||
|  | ||||
|                 ViewManagerRegistry viewManagerRegistry = | ||||
|                     new ViewManagerRegistry( | ||||
|                         reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); | ||||
|  | ||||
|                 return new FabricJSIModuleProvider( | ||||
|                     reactApplicationContext, | ||||
|                     componentFactory, | ||||
|                     ReactNativeConfig.DEFAULT_CONFIG, | ||||
|                     viewManagerRegistry); | ||||
|               } | ||||
|             }); | ||||
|         return specs; | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| package com.uiwjs.example.alipay.newarchitecture.components; | ||||
|  | ||||
| import com.facebook.jni.HybridData; | ||||
| import com.facebook.proguard.annotations.DoNotStrip; | ||||
| import com.facebook.react.fabric.ComponentFactory; | ||||
| import com.facebook.soloader.SoLoader; | ||||
|  | ||||
| /** | ||||
|  * Class responsible to load the custom Fabric Components. This class has native methods and needs a | ||||
|  * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||||
|  * folder for you). | ||||
|  * | ||||
|  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||
|  * `newArchEnabled` property). Is ignored otherwise. | ||||
|  */ | ||||
| @DoNotStrip | ||||
| public class MainComponentsRegistry { | ||||
|   static { | ||||
|     SoLoader.loadLibrary("fabricjni"); | ||||
|   } | ||||
|  | ||||
|   @DoNotStrip private final HybridData mHybridData; | ||||
|  | ||||
|   @DoNotStrip | ||||
|   private native HybridData initHybrid(ComponentFactory componentFactory); | ||||
|  | ||||
|   @DoNotStrip | ||||
|   private MainComponentsRegistry(ComponentFactory componentFactory) { | ||||
|     mHybridData = initHybrid(componentFactory); | ||||
|   } | ||||
|  | ||||
|   @DoNotStrip | ||||
|   public static MainComponentsRegistry register(ComponentFactory componentFactory) { | ||||
|     return new MainComponentsRegistry(componentFactory); | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,48 @@ | ||||
| package com.uiwjs.example.alipay.newarchitecture.modules; | ||||
|  | ||||
| import com.facebook.jni.HybridData; | ||||
| import com.facebook.react.ReactPackage; | ||||
| import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||||
| import com.facebook.react.bridge.ReactApplicationContext; | ||||
| import com.facebook.soloader.SoLoader; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * Class responsible to load the TurboModules. This class has native methods and needs a | ||||
|  * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||||
|  * folder for you). | ||||
|  * | ||||
|  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||
|  * `newArchEnabled` property). Is ignored otherwise. | ||||
|  */ | ||||
| public class MainApplicationTurboModuleManagerDelegate | ||||
|     extends ReactPackageTurboModuleManagerDelegate { | ||||
|  | ||||
|   private static volatile boolean sIsSoLibraryLoaded; | ||||
|  | ||||
|   protected MainApplicationTurboModuleManagerDelegate( | ||||
|       ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) { | ||||
|     super(reactApplicationContext, packages); | ||||
|   } | ||||
|  | ||||
|   protected native HybridData initHybrid(); | ||||
|  | ||||
|   native boolean canCreateTurboModule(String moduleName); | ||||
|  | ||||
|   public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { | ||||
|     protected MainApplicationTurboModuleManagerDelegate build( | ||||
|         ReactApplicationContext context, List<ReactPackage> packages) { | ||||
|       return new MainApplicationTurboModuleManagerDelegate(context, packages); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   protected synchronized void maybeLoadOtherSoLibraries() { | ||||
|     if (!sIsSoLibraryLoaded) { | ||||
|       // If you change the name of your application .so file in the Android.mk file, | ||||
|       // make sure you update the name here as well. | ||||
|       SoLoader.loadLibrary("example_appmodules"); | ||||
|       sIsSoLibraryLoaded = true; | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										48
									
								
								example/android/app/src/main/jni/Android.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								example/android/app/src/main/jni/Android.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| THIS_DIR := $(call my-dir) | ||||
|  | ||||
| include $(REACT_ANDROID_DIR)/Android-prebuilt.mk | ||||
|  | ||||
| # If you wish to add a custom TurboModule or Fabric component in your app you | ||||
| # will have to include the following autogenerated makefile. | ||||
| # include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk | ||||
| include $(CLEAR_VARS) | ||||
|  | ||||
| LOCAL_PATH := $(THIS_DIR) | ||||
|  | ||||
| # You can customize the name of your application .so file here. | ||||
| LOCAL_MODULE := example_appmodules | ||||
|  | ||||
| LOCAL_C_INCLUDES := $(LOCAL_PATH) | ||||
| LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) | ||||
| LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) | ||||
|  | ||||
| # If you wish to add a custom TurboModule or Fabric component in your app you | ||||
| # will have to uncomment those lines to include the generated source | ||||
| # files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) | ||||
| # | ||||
| # LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||||
| # LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp) | ||||
| # LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||||
|  | ||||
| # Here you should add any native library you wish to depend on. | ||||
| LOCAL_SHARED_LIBRARIES := \ | ||||
|   libfabricjni \ | ||||
|   libfbjni \ | ||||
|   libfolly_runtime \ | ||||
|   libglog \ | ||||
|   libjsi \ | ||||
|   libreact_codegen_rncore \ | ||||
|   libreact_debug \ | ||||
|   libreact_nativemodule_core \ | ||||
|   libreact_render_componentregistry \ | ||||
|   libreact_render_core \ | ||||
|   libreact_render_debug \ | ||||
|   libreact_render_graphics \ | ||||
|   librrc_view \ | ||||
|   libruntimeexecutor \ | ||||
|   libturbomodulejsijni \ | ||||
|   libyoga | ||||
|  | ||||
| LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall | ||||
|  | ||||
| include $(BUILD_SHARED_LIBRARY) | ||||
| @@ -0,0 +1,24 @@ | ||||
| #include "MainApplicationModuleProvider.h" | ||||
|  | ||||
| #include <rncore.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||||
|     const std::string moduleName, | ||||
|     const JavaTurboModule::InitParams ¶ms) { | ||||
|   // Here you can provide your own module provider for TurboModules coming from | ||||
|   // either your application or from external libraries. The approach to follow | ||||
|   // is similar to the following (for a library called `samplelibrary`: | ||||
|   // | ||||
|   // auto module = samplelibrary_ModuleProvider(moduleName, params); | ||||
|   // if (module != nullptr) { | ||||
|   //    return module; | ||||
|   // } | ||||
|   // return rncore_ModuleProvider(moduleName, params); | ||||
|   return rncore_ModuleProvider(moduleName, params); | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -0,0 +1,16 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <memory> | ||||
| #include <string> | ||||
|  | ||||
| #include <ReactCommon/JavaTurboModule.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||||
|     const std::string moduleName, | ||||
|     const JavaTurboModule::InitParams ¶ms); | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -0,0 +1,45 @@ | ||||
| #include "MainApplicationTurboModuleManagerDelegate.h" | ||||
| #include "MainApplicationModuleProvider.h" | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> | ||||
| MainApplicationTurboModuleManagerDelegate::initHybrid( | ||||
|     jni::alias_ref<jhybridobject>) { | ||||
|   return makeCxxInstance(); | ||||
| } | ||||
|  | ||||
| void MainApplicationTurboModuleManagerDelegate::registerNatives() { | ||||
|   registerHybrid({ | ||||
|       makeNativeMethod( | ||||
|           "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), | ||||
|       makeNativeMethod( | ||||
|           "canCreateTurboModule", | ||||
|           MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), | ||||
|   }); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<TurboModule> | ||||
| MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||
|     const std::string name, | ||||
|     const std::shared_ptr<CallInvoker> jsInvoker) { | ||||
|   // Not implemented yet: provide pure-C++ NativeModules here. | ||||
|   return nullptr; | ||||
| } | ||||
|  | ||||
| std::shared_ptr<TurboModule> | ||||
| MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||
|     const std::string name, | ||||
|     const JavaTurboModule::InitParams ¶ms) { | ||||
|   return MainApplicationModuleProvider(name, params); | ||||
| } | ||||
|  | ||||
| bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( | ||||
|     std::string name) { | ||||
|   return getTurboModule(name, nullptr) != nullptr || | ||||
|       getTurboModule(name, {.moduleName = name}) != nullptr; | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -0,0 +1,38 @@ | ||||
| #include <memory> | ||||
| #include <string> | ||||
|  | ||||
| #include <ReactCommon/TurboModuleManagerDelegate.h> | ||||
| #include <fbjni/fbjni.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| class MainApplicationTurboModuleManagerDelegate | ||||
|     : public jni::HybridClass< | ||||
|           MainApplicationTurboModuleManagerDelegate, | ||||
|           TurboModuleManagerDelegate> { | ||||
|  public: | ||||
|   // Adapt it to the package you used for your Java class. | ||||
|   static constexpr auto kJavaDescriptor = | ||||
|       "Lcom/example/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; | ||||
|  | ||||
|   static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); | ||||
|  | ||||
|   static void registerNatives(); | ||||
|  | ||||
|   std::shared_ptr<TurboModule> getTurboModule( | ||||
|       const std::string name, | ||||
|       const std::shared_ptr<CallInvoker> jsInvoker) override; | ||||
|   std::shared_ptr<TurboModule> getTurboModule( | ||||
|       const std::string name, | ||||
|       const JavaTurboModule::InitParams ¶ms) override; | ||||
|  | ||||
|   /** | ||||
|    * Test-only method. Allows user to verify whether a TurboModule can be | ||||
|    * created by instances of this class. | ||||
|    */ | ||||
|   bool canCreateTurboModule(std::string name); | ||||
| }; | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
							
								
								
									
										61
									
								
								example/android/app/src/main/jni/MainComponentsRegistry.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								example/android/app/src/main/jni/MainComponentsRegistry.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| #include "MainComponentsRegistry.h" | ||||
|  | ||||
| #include <CoreComponentsRegistry.h> | ||||
| #include <fbjni/fbjni.h> | ||||
| #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||||
| #include <react/renderer/components/rncore/ComponentDescriptors.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} | ||||
|  | ||||
| std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||||
| MainComponentsRegistry::sharedProviderRegistry() { | ||||
|   auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); | ||||
|  | ||||
|   // Custom Fabric Components go here. You can register custom | ||||
|   // components coming from your App or from 3rd party libraries here. | ||||
|   // | ||||
|   // providerRegistry->add(concreteComponentDescriptorProvider< | ||||
|   //        AocViewerComponentDescriptor>()); | ||||
|   return providerRegistry; | ||||
| } | ||||
|  | ||||
| jni::local_ref<MainComponentsRegistry::jhybriddata> | ||||
| MainComponentsRegistry::initHybrid( | ||||
|     jni::alias_ref<jclass>, | ||||
|     ComponentFactory *delegate) { | ||||
|   auto instance = makeCxxInstance(delegate); | ||||
|  | ||||
|   auto buildRegistryFunction = | ||||
|       [](EventDispatcher::Weak const &eventDispatcher, | ||||
|          ContextContainer::Shared const &contextContainer) | ||||
|       -> ComponentDescriptorRegistry::Shared { | ||||
|     auto registry = MainComponentsRegistry::sharedProviderRegistry() | ||||
|                         ->createComponentDescriptorRegistry( | ||||
|                             {eventDispatcher, contextContainer}); | ||||
|  | ||||
|     auto mutableRegistry = | ||||
|         std::const_pointer_cast<ComponentDescriptorRegistry>(registry); | ||||
|  | ||||
|     mutableRegistry->setFallbackComponentDescriptor( | ||||
|         std::make_shared<UnimplementedNativeViewComponentDescriptor>( | ||||
|             ComponentDescriptorParameters{ | ||||
|                 eventDispatcher, contextContainer, nullptr})); | ||||
|  | ||||
|     return registry; | ||||
|   }; | ||||
|  | ||||
|   delegate->buildRegistryFunction = buildRegistryFunction; | ||||
|   return instance; | ||||
| } | ||||
|  | ||||
| void MainComponentsRegistry::registerNatives() { | ||||
|   registerHybrid({ | ||||
|       makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), | ||||
|   }); | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
							
								
								
									
										32
									
								
								example/android/app/src/main/jni/MainComponentsRegistry.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								example/android/app/src/main/jni/MainComponentsRegistry.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <ComponentFactory.h> | ||||
| #include <fbjni/fbjni.h> | ||||
| #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||||
| #include <react/renderer/componentregistry/ComponentDescriptorRegistry.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| class MainComponentsRegistry | ||||
|     : public facebook::jni::HybridClass<MainComponentsRegistry> { | ||||
|  public: | ||||
|   // Adapt it to the package you used for your Java class. | ||||
|   constexpr static auto kJavaDescriptor = | ||||
|       "Lcom/example/newarchitecture/components/MainComponentsRegistry;"; | ||||
|  | ||||
|   static void registerNatives(); | ||||
|  | ||||
|   MainComponentsRegistry(ComponentFactory *delegate); | ||||
|  | ||||
|  private: | ||||
|   static std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||||
|   sharedProviderRegistry(); | ||||
|  | ||||
|   static jni::local_ref<jhybriddata> initHybrid( | ||||
|       jni::alias_ref<jclass>, | ||||
|       ComponentFactory *delegate); | ||||
| }; | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
							
								
								
									
										11
									
								
								example/android/app/src/main/jni/OnLoad.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								example/android/app/src/main/jni/OnLoad.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| #include <fbjni/fbjni.h> | ||||
| #include "MainApplicationTurboModuleManagerDelegate.h" | ||||
| #include "MainComponentsRegistry.h" | ||||
|  | ||||
| JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { | ||||
|   return facebook::jni::initialize(vm, [] { | ||||
|     facebook::react::MainApplicationTurboModuleManagerDelegate:: | ||||
|         registerNatives(); | ||||
|     facebook::react::MainComponentsRegistry::registerNatives(); | ||||
|   }); | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Copyright (C) 2014 The Android Open Source Project | ||||
|  | ||||
|      Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|      you may not use this file except in compliance with the License. | ||||
|      You may obtain a copy of the License at | ||||
|  | ||||
|           http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|      Unless required by applicable law or agreed to in writing, software | ||||
|      distributed under the License is distributed on an "AS IS" BASIS, | ||||
|      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|      See the License for the specific language governing permissions and | ||||
|      limitations under the License. | ||||
| --> | ||||
| <inset xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|        android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material" | ||||
|        android:insetRight="@dimen/abc_edit_text_inset_horizontal_material" | ||||
|        android:insetTop="@dimen/abc_edit_text_inset_top_material" | ||||
|        android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> | ||||
|  | ||||
|     <selector> | ||||
|         <!--  | ||||
|           This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I). | ||||
|           The item below with state_pressed="false" and state_focused="false" causes a NullPointerException. | ||||
|           NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' | ||||
|  | ||||
|           <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||||
|  | ||||
|           For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR. | ||||
|         --> | ||||
|         <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||||
|         <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/> | ||||
|     </selector> | ||||
|  | ||||
| </inset> | ||||
| @@ -1,3 +1,3 @@ | ||||
| <resources> | ||||
|     <string name="app_name">example</string> | ||||
|     <string name="app_name">支付宝SDK实例</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <resources> | ||||
|  | ||||
|     <!-- Base application theme. --> | ||||
|     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> | ||||
|     <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> | ||||
|         <!-- Customize your theme here. --> | ||||
|         <item name="android:textColor">#000000</item> | ||||
|         <item name="android:editTextBackground">@drawable/rn_edit_text_material</item> | ||||
|     </style> | ||||
|  | ||||
| </resources> | ||||
|   | ||||
| @@ -1,19 +1,30 @@ | ||||
| import org.apache.tools.ant.taskdefs.condition.Os | ||||
|  | ||||
| // Top-level build file where you can add configuration options common to all sub-projects/modules. | ||||
|  | ||||
| buildscript { | ||||
|     ext { | ||||
|         buildToolsVersion = "28.0.3" | ||||
|         minSdkVersion = 16 | ||||
|         compileSdkVersion = 28 | ||||
|         targetSdkVersion = 28 | ||||
|         buildToolsVersion = "31.0.0" | ||||
|         minSdkVersion = 21 | ||||
|         compileSdkVersion = 31 | ||||
|         targetSdkVersion = 31 | ||||
|  | ||||
|         if (System.properties['os.arch'] == "aarch64") { | ||||
|             // For M1 Users we need to use the NDK 24 which added support for aarch64 | ||||
|             ndkVersion = "24.0.8215888" | ||||
|         } else { | ||||
|             // Otherwise we default to the side-by-side NDK version from AGP. | ||||
|             ndkVersion = "21.4.7075529" | ||||
|         } | ||||
|     } | ||||
|     repositories { | ||||
|         google() | ||||
|         jcenter() | ||||
|         mavenCentral() | ||||
|     } | ||||
|     dependencies { | ||||
|         classpath("com.android.tools.build:gradle:3.5.2") | ||||
|  | ||||
|         classpath("com.android.tools.build:gradle:7.1.1") | ||||
|         classpath("com.facebook.react:react-native-gradle-plugin") | ||||
|         classpath("de.undercouch:gradle-download-task:5.0.1") | ||||
|         // NOTE: Do not place your application dependencies here; they belong | ||||
|         // in the individual module build.gradle files | ||||
|     } | ||||
| @@ -21,7 +32,6 @@ buildscript { | ||||
|  | ||||
| allprojects { | ||||
|     repositories { | ||||
|         mavenLocal() | ||||
|         maven { | ||||
|             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||||
|             url("$rootDir/../node_modules/react-native/android") | ||||
| @@ -30,9 +40,14 @@ allprojects { | ||||
|             // Android JSC is installed from npm | ||||
|             url("$rootDir/../node_modules/jsc-android/dist") | ||||
|         } | ||||
|  | ||||
|         mavenCentral { | ||||
|             // We don't want to fetch react-native from Maven Central as there are | ||||
|             // older versions over there. | ||||
|             content { | ||||
|                 excludeGroup "com.facebook.react" | ||||
|             } | ||||
|         } | ||||
|         google() | ||||
|         jcenter() | ||||
|         maven { url 'https://www.jitpack.io' } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,8 +9,8 @@ | ||||
|  | ||||
| # Specifies the JVM arguments used for the daemon process. | ||||
| # The setting is particularly useful for tweaking memory settings. | ||||
| # Default value: -Xmx10248m -XX:MaxPermSize=256m | ||||
| # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 | ||||
| # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m | ||||
| org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m | ||||
|  | ||||
| # When configured, Gradle will run in incubating parallel mode. | ||||
| # This option should only be used with decoupled projects. More details, visit | ||||
| @@ -25,4 +25,16 @@ android.useAndroidX=true | ||||
| android.enableJetifier=true | ||||
|  | ||||
| # Version of flipper SDK to use with React Native | ||||
| FLIPPER_VERSION=0.33.1 | ||||
| FLIPPER_VERSION=0.125.0 | ||||
|  | ||||
| # Use this property to specify which architecture you want to build. | ||||
| # You can also override it from the CLI using | ||||
| # ./gradlew <task> -PreactNativeArchitectures=x86_64 | ||||
| reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 | ||||
|  | ||||
| # Use this property to enable support to the new architecture. | ||||
| # This will allow you to use TurboModules and the Fabric render in | ||||
| # your application. You should enable this flag either if you want | ||||
| # to write custom TurboModules/Fabric components OR use libraries that | ||||
| # are providing them. | ||||
| newArchEnabled=false | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								example/android/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								example/android/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,5 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| zipStorePath=wrapper/dists | ||||
|   | ||||
							
								
								
									
										270
									
								
								example/android/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										270
									
								
								example/android/gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| #!/usr/bin/env sh | ||||
| #!/bin/sh | ||||
|  | ||||
| # | ||||
| # Copyright 2015 the original author or authors. | ||||
| # Copyright © 2015-2021 the original authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @@ -17,78 +17,113 @@ | ||||
| # | ||||
|  | ||||
| ############################################################################## | ||||
| ## | ||||
| ##  Gradle start up script for UN*X | ||||
| ## | ||||
| # | ||||
| #   Gradle start up script for POSIX generated by Gradle. | ||||
| # | ||||
| #   Important for running: | ||||
| # | ||||
| #   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | ||||
| #       noncompliant, but you have some other compliant shell such as ksh or | ||||
| #       bash, then to run this script, type that shell name before the whole | ||||
| #       command line, like: | ||||
| # | ||||
| #           ksh Gradle | ||||
| # | ||||
| #       Busybox and similar reduced shells will NOT work, because this script | ||||
| #       requires all of these POSIX shell features: | ||||
| #         * functions; | ||||
| #         * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | ||||
| #           «${var#prefix}», «${var%suffix}», and «$( cmd )»; | ||||
| #         * compound commands having a testable exit status, especially «case»; | ||||
| #         * various built-in commands including «command», «set», and «ulimit». | ||||
| # | ||||
| #   Important for patching: | ||||
| # | ||||
| #   (2) This script targets any POSIX shell, so it avoids extensions provided | ||||
| #       by Bash, Ksh, etc; in particular arrays are avoided. | ||||
| # | ||||
| #       The "traditional" practice of packing multiple parameters into a | ||||
| #       space-separated string is a well documented source of bugs and security | ||||
| #       problems, so this is (mostly) avoided, by progressively accumulating | ||||
| #       options in "$@", and eventually passing that to Java. | ||||
| # | ||||
| #       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | ||||
| #       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | ||||
| #       see the in-line comments for details. | ||||
| # | ||||
| #       There are tweaks for specific operating systems such as AIX, CygWin, | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| # | ||||
| ############################################################################## | ||||
|  | ||||
| # Attempt to set APP_HOME | ||||
|  | ||||
| # Resolve links: $0 may be a link | ||||
| PRG="$0" | ||||
| # Need this for relative symlinks. | ||||
| while [ -h "$PRG" ] ; do | ||||
|     ls=`ls -ld "$PRG"` | ||||
|     link=`expr "$ls" : '.*-> \(.*\)$'` | ||||
|     if expr "$link" : '/.*' > /dev/null; then | ||||
|         PRG="$link" | ||||
|     else | ||||
|         PRG=`dirname "$PRG"`"/$link" | ||||
|     fi | ||||
| app_path=$0 | ||||
|  | ||||
| # Need this for daisy-chained symlinks. | ||||
| while | ||||
|     APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path | ||||
|     [ -h "$app_path" ] | ||||
| do | ||||
|     ls=$( ls -ld "$app_path" ) | ||||
|     link=${ls#*' -> '} | ||||
|     case $link in             #( | ||||
|       /*)   app_path=$link ;; #( | ||||
|       *)    app_path=$APP_HOME$link ;; | ||||
|     esac | ||||
| done | ||||
| SAVED="`pwd`" | ||||
| cd "`dirname \"$PRG\"`/" >/dev/null | ||||
| APP_HOME="`pwd -P`" | ||||
| cd "$SAVED" >/dev/null | ||||
|  | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||||
|  | ||||
| APP_NAME="Gradle" | ||||
| APP_BASE_NAME=`basename "$0"` | ||||
| APP_BASE_NAME=${0##*/} | ||||
|  | ||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
|  | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD="maximum" | ||||
| MAX_FD=maximum | ||||
|  | ||||
| warn () { | ||||
|     echo "$*" | ||||
| } | ||||
| } >&2 | ||||
|  | ||||
| die () { | ||||
|     echo | ||||
|     echo "$*" | ||||
|     echo | ||||
|     exit 1 | ||||
| } | ||||
| } >&2 | ||||
|  | ||||
| # OS specific support (must be 'true' or 'false'). | ||||
| cygwin=false | ||||
| msys=false | ||||
| darwin=false | ||||
| nonstop=false | ||||
| case "`uname`" in | ||||
|   CYGWIN* ) | ||||
|     cygwin=true | ||||
|     ;; | ||||
|   Darwin* ) | ||||
|     darwin=true | ||||
|     ;; | ||||
|   MINGW* ) | ||||
|     msys=true | ||||
|     ;; | ||||
|   NONSTOP* ) | ||||
|     nonstop=true | ||||
|     ;; | ||||
| case "$( uname )" in                #( | ||||
|   CYGWIN* )         cygwin=true  ;; #( | ||||
|   Darwin* )         darwin=true  ;; #( | ||||
|   MSYS* | MINGW* )  msys=true    ;; #( | ||||
|   NONSTOP* )        nonstop=true ;; | ||||
| esac | ||||
|  | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
|  | ||||
|  | ||||
| # Determine the Java command to use to start the JVM. | ||||
| if [ -n "$JAVA_HOME" ] ; then | ||||
|     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||||
|         # IBM's JDK on AIX uses strange locations for the executables | ||||
|         JAVACMD="$JAVA_HOME/jre/sh/java" | ||||
|         JAVACMD=$JAVA_HOME/jre/sh/java | ||||
|     else | ||||
|         JAVACMD="$JAVA_HOME/bin/java" | ||||
|         JAVACMD=$JAVA_HOME/bin/java | ||||
|     fi | ||||
|     if [ ! -x "$JAVACMD" ] ; then | ||||
|         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||||
| @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the | ||||
| location of your Java installation." | ||||
|     fi | ||||
| else | ||||
|     JAVACMD="java" | ||||
|     JAVACMD=java | ||||
|     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
|  | ||||
| Please set the JAVA_HOME variable in your environment to match the | ||||
| @@ -105,84 +140,95 @@ location of your Java installation." | ||||
| fi | ||||
|  | ||||
| # Increase the maximum file descriptors if we can. | ||||
| if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||||
|     MAX_FD_LIMIT=`ulimit -H -n` | ||||
|     if [ $? -eq 0 ] ; then | ||||
|         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||||
|             MAX_FD="$MAX_FD_LIMIT" | ||||
|         fi | ||||
|         ulimit -n $MAX_FD | ||||
|         if [ $? -ne 0 ] ; then | ||||
|             warn "Could not set maximum file descriptor limit: $MAX_FD" | ||||
|         fi | ||||
|     else | ||||
|         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # For Darwin, add options to specify how the application appears in the dock | ||||
| if $darwin; then | ||||
|     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||||
| fi | ||||
|  | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then | ||||
|     APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||||
|     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||||
|     JAVACMD=`cygpath --unix "$JAVACMD"` | ||||
|  | ||||
|     # We build the pattern for arguments to be converted via cygpath | ||||
|     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||||
|     SEP="" | ||||
|     for dir in $ROOTDIRSRAW ; do | ||||
|         ROOTDIRS="$ROOTDIRS$SEP$dir" | ||||
|         SEP="|" | ||||
|     done | ||||
|     OURCYGPATTERN="(^($ROOTDIRS))" | ||||
|     # Add a user-defined pattern to the cygpath arguments | ||||
|     if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||||
|         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||||
|     fi | ||||
|     # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||||
|     i=0 | ||||
|     for arg in "$@" ; do | ||||
|         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||||
|         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option | ||||
|  | ||||
|         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition | ||||
|             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||||
|         else | ||||
|             eval `echo args$i`="\"$arg\"" | ||||
|         fi | ||||
|         i=$((i+1)) | ||||
|     done | ||||
|     case $i in | ||||
|         (0) set -- ;; | ||||
|         (1) set -- "$args0" ;; | ||||
|         (2) set -- "$args0" "$args1" ;; | ||||
|         (3) set -- "$args0" "$args1" "$args2" ;; | ||||
|         (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||||
|         (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||||
|         (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||||
|         (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||||
|         (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||||
|         (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||||
| if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||||
|     case $MAX_FD in #( | ||||
|       max*) | ||||
|         MAX_FD=$( ulimit -H -n ) || | ||||
|             warn "Could not query maximum file descriptor limit" | ||||
|     esac | ||||
|     case $MAX_FD in  #( | ||||
|       '' | soft) :;; #( | ||||
|       *) | ||||
|         ulimit -n "$MAX_FD" || | ||||
|             warn "Could not set maximum file descriptor limit to $MAX_FD" | ||||
|     esac | ||||
| fi | ||||
|  | ||||
| # Escape application args | ||||
| save () { | ||||
|     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||||
|     echo " " | ||||
| } | ||||
| APP_ARGS=$(save "$@") | ||||
| # Collect all arguments for the java command, stacking in reverse order: | ||||
| #   * args from the command line | ||||
| #   * the main class name | ||||
| #   * -classpath | ||||
| #   * -D...appname settings | ||||
| #   * --module-path (only if needed) | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | ||||
|  | ||||
| # Collect all arguments for the java command, following the shell quoting and substitution rules | ||||
| eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if "$cygwin" || "$msys" ; then | ||||
|     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||
|     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||
|  | ||||
| # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||||
| if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||||
|   cd "$(dirname "$0")" | ||||
|     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||
|  | ||||
|     # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||||
|     for arg do | ||||
|         if | ||||
|             case $arg in                                #( | ||||
|               -*)   false ;;                            # don't mess with options #( | ||||
|               /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath | ||||
|                     [ -e "$t" ] ;;                      #( | ||||
|               *)    false ;; | ||||
|             esac | ||||
|         then | ||||
|             arg=$( cygpath --path --ignore --mixed "$arg" ) | ||||
|         fi | ||||
|         # Roll the args list around exactly as many times as the number of | ||||
|         # args, so each arg winds up back in the position where it started, but | ||||
|         # possibly modified. | ||||
|         # | ||||
|         # NB: a `for` loop captures its iteration list before it begins, so | ||||
|         # changing the positional parameters here affects neither the number of | ||||
|         # iterations, nor the values presented in `arg`. | ||||
|         shift                   # remove old arg | ||||
|         set -- "$@" "$arg"      # push replacement arg | ||||
|     done | ||||
| fi | ||||
|  | ||||
| # Collect all arguments for the java command; | ||||
| #   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | ||||
| #     shell script including quotes and variable substitutions, so put them in | ||||
| #     double quotes to make sure that they get re-expanded; and | ||||
| #   * put everything else in single quotes, so that it's not re-expanded. | ||||
|  | ||||
| set -- \ | ||||
|         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||
|         -classpath "$CLASSPATH" \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
|  | ||||
| # Use "xargs" to parse quoted args. | ||||
| # | ||||
| # With -n1 it outputs one arg per line, with the quotes and backslashes removed. | ||||
| # | ||||
| # In Bash we could simply go: | ||||
| # | ||||
| #   readarray ARGS < <( xargs -n1 <<<"$var" ) && | ||||
| #   set -- "${ARGS[@]}" "$@" | ||||
| # | ||||
| # but POSIX shell has neither arrays nor command substitution, so instead we | ||||
| # post-process each arg (as a line of input to sed) to backslash-escape any | ||||
| # character that might be a shell metacharacter, then use eval to reverse | ||||
| # that process (while maintaining the separation between arguments), and wrap | ||||
| # the whole thing up as a single "set" statement. | ||||
| # | ||||
| # This will of course break if any of these variables contains a newline or | ||||
| # an unmatched quote. | ||||
| # | ||||
|  | ||||
| eval "set -- $( | ||||
|         printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | ||||
|         xargs -n1 | | ||||
|         sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | ||||
|         tr '\n' ' ' | ||||
|     )" '"$@"' | ||||
|  | ||||
| exec "$JAVACMD" "$@" | ||||
|   | ||||
							
								
								
									
										189
									
								
								example/android/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										189
									
								
								example/android/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @@ -1,100 +1,89 @@ | ||||
| @rem | ||||
| @rem Copyright 2015 the original author or authors. | ||||
| @rem | ||||
| @rem Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| @rem you may not use this file except in compliance with the License. | ||||
| @rem You may obtain a copy of the License at | ||||
| @rem | ||||
| @rem      https://www.apache.org/licenses/LICENSE-2.0 | ||||
| @rem | ||||
| @rem Unless required by applicable law or agreed to in writing, software | ||||
| @rem distributed under the License is distributed on an "AS IS" BASIS, | ||||
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
|  | ||||
| @if "%DEBUG%" == "" @echo off | ||||
| @rem ########################################################################## | ||||
| @rem | ||||
| @rem  Gradle startup script for Windows | ||||
| @rem | ||||
| @rem ########################################################################## | ||||
|  | ||||
| @rem Set local scope for the variables with windows NT shell | ||||
| if "%OS%"=="Windows_NT" setlocal | ||||
|  | ||||
| set DIRNAME=%~dp0 | ||||
| if "%DIRNAME%" == "" set DIRNAME=. | ||||
| set APP_BASE_NAME=%~n0 | ||||
| set APP_HOME=%DIRNAME% | ||||
|  | ||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||
|  | ||||
| @rem Find java.exe | ||||
| if defined JAVA_HOME goto findJavaFromJavaHome | ||||
|  | ||||
| set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if "%ERRORLEVEL%" == "0" goto init | ||||
|  | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
|  | ||||
| goto fail | ||||
|  | ||||
| :findJavaFromJavaHome | ||||
| set JAVA_HOME=%JAVA_HOME:"=% | ||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
|  | ||||
| if exist "%JAVA_EXE%" goto init | ||||
|  | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
|  | ||||
| goto fail | ||||
|  | ||||
| :init | ||||
| @rem Get command-line arguments, handling Windows variants | ||||
|  | ||||
| if not "%OS%" == "Windows_NT" goto win9xME_args | ||||
|  | ||||
| :win9xME_args | ||||
| @rem Slurp the command line arguments. | ||||
| set CMD_LINE_ARGS= | ||||
| set _SKIP=2 | ||||
|  | ||||
| :win9xME_args_slurp | ||||
| if "x%~1" == "x" goto execute | ||||
|  | ||||
| set CMD_LINE_ARGS=%* | ||||
|  | ||||
| :execute | ||||
| @rem Setup the command line | ||||
|  | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
|  | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||||
|  | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
| if "%ERRORLEVEL%"=="0" goto mainEnd | ||||
|  | ||||
| :fail | ||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||
| rem the _cmd.exe /c_ return code! | ||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||
| exit /b 1 | ||||
|  | ||||
| :mainEnd | ||||
| if "%OS%"=="Windows_NT" endlocal | ||||
|  | ||||
| :omega | ||||
| @rem | ||||
| @rem Copyright 2015 the original author or authors. | ||||
| @rem | ||||
| @rem Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| @rem you may not use this file except in compliance with the License. | ||||
| @rem You may obtain a copy of the License at | ||||
| @rem | ||||
| @rem      https://www.apache.org/licenses/LICENSE-2.0 | ||||
| @rem | ||||
| @rem Unless required by applicable law or agreed to in writing, software | ||||
| @rem distributed under the License is distributed on an "AS IS" BASIS, | ||||
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
|  | ||||
| @if "%DEBUG%" == "" @echo off | ||||
| @rem ########################################################################## | ||||
| @rem | ||||
| @rem  Gradle startup script for Windows | ||||
| @rem | ||||
| @rem ########################################################################## | ||||
|  | ||||
| @rem Set local scope for the variables with windows NT shell | ||||
| if "%OS%"=="Windows_NT" setlocal | ||||
|  | ||||
| set DIRNAME=%~dp0 | ||||
| if "%DIRNAME%" == "" set DIRNAME=. | ||||
| set APP_BASE_NAME=%~n0 | ||||
| set APP_HOME=%DIRNAME% | ||||
|  | ||||
| @rem Resolve any "." and ".." in APP_HOME to make it shorter. | ||||
| for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | ||||
|  | ||||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||
| set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||
|  | ||||
| @rem Find java.exe | ||||
| if defined JAVA_HOME goto findJavaFromJavaHome | ||||
|  | ||||
| set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if "%ERRORLEVEL%" == "0" goto execute | ||||
|  | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
|  | ||||
| goto fail | ||||
|  | ||||
| :findJavaFromJavaHome | ||||
| set JAVA_HOME=%JAVA_HOME:"=% | ||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
|  | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
|  | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
|  | ||||
| goto fail | ||||
|  | ||||
| :execute | ||||
| @rem Setup the command line | ||||
|  | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
|  | ||||
|  | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||
|  | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
| if "%ERRORLEVEL%"=="0" goto mainEnd | ||||
|  | ||||
| :fail | ||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||
| rem the _cmd.exe /c_ return code! | ||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||
| exit /b 1 | ||||
|  | ||||
| :mainEnd | ||||
| if "%OS%"=="Windows_NT" endlocal | ||||
|  | ||||
| :omega | ||||
|   | ||||
| @@ -1,3 +1,11 @@ | ||||
| rootProject.name = 'example' | ||||
| apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | ||||
| include ':app' | ||||
| includeBuild('../node_modules/react-native-gradle-plugin') | ||||
|  | ||||
| if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { | ||||
|     include(":ReactAndroid") | ||||
|     project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') | ||||
|     include(":ReactAndroid:hermes-engine") | ||||
|     project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') | ||||
| } | ||||
|   | ||||
| @@ -1,104 +1,35 @@ | ||||
| platform :ios, '9.0' | ||||
| require_relative '../node_modules/react-native/scripts/react_native_pods' | ||||
| require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | ||||
|  | ||||
| def add_flipper_pods!(versions = {}) | ||||
|   versions['Flipper'] ||= '~> 0.33.1' | ||||
|   versions['DoubleConversion'] ||= '1.1.7' | ||||
|   versions['Flipper-Folly'] ||= '~> 2.1' | ||||
|   versions['Flipper-Glog'] ||= '0.3.6' | ||||
|   versions['Flipper-PeerTalk'] ||= '~> 0.0.4' | ||||
|   versions['Flipper-RSocket'] ||= '~> 1.0' | ||||
| platform :ios, '12.4' | ||||
| install! 'cocoapods', :deterministic_uuids => false | ||||
|  | ||||
|   pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug' | ||||
|  | ||||
|   # List all transitive dependencies for FlipperKit pods | ||||
|   # to avoid them being linked in Release builds | ||||
|   pod 'Flipper', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug' | ||||
|   pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug' | ||||
|   pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug' | ||||
|   pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug' | ||||
|   pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug' | ||||
|   pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug' | ||||
| end | ||||
|  | ||||
| # Post Install processing for Flipper | ||||
| def flipper_post_install(installer) | ||||
|   installer.pods_project.targets.each do |target| | ||||
|     if target.name == 'YogaKit' | ||||
|       target.build_configurations.each do |config| | ||||
|         config.build_settings['SWIFT_VERSION'] = '4.1' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| production = ENV["PRODUCTION"] == "1" | ||||
|  | ||||
| target 'example' do | ||||
|   # Pods for example | ||||
|   pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" | ||||
|   pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" | ||||
|   pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" | ||||
|   pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" | ||||
|   pod 'React', :path => '../node_modules/react-native/' | ||||
|   pod 'React-Core', :path => '../node_modules/react-native/' | ||||
|   pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' | ||||
|   pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' | ||||
|   pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' | ||||
|   pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' | ||||
|   pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' | ||||
|   pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' | ||||
|   pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' | ||||
|   pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' | ||||
|   pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' | ||||
|   pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' | ||||
|   pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' | ||||
|   pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' | ||||
|   config = use_native_modules! | ||||
|  | ||||
|   pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' | ||||
|   pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' | ||||
|   pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' | ||||
|   pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' | ||||
|   pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon" | ||||
|   pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" | ||||
|   pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true | ||||
|   # Flags change depending on the env values. | ||||
|   flags = get_default_flags() | ||||
|  | ||||
|   pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' | ||||
|   pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' | ||||
|   pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' | ||||
|   use_react_native!( | ||||
|     :path => config[:reactNativePath], | ||||
|     # to enable hermes on iOS, change `false` to `true` and then install pods | ||||
|     :production => production, | ||||
|     :hermes_enabled => flags[:hermes_enabled], | ||||
|     :fabric_enabled => flags[:fabric_enabled], | ||||
|     :flipper_configuration => FlipperConfiguration.enabled, | ||||
|     # An absolute path to your application root. | ||||
|     :app_path => "#{Pod::Config.instance.installation_root}/.." | ||||
|   ) | ||||
|  | ||||
|   target 'exampleTests' do | ||||
|     inherit! :complete | ||||
|     # Pods for testing | ||||
|   end | ||||
|  | ||||
|   use_native_modules! | ||||
|  | ||||
|   # Enables Flipper. | ||||
|   # | ||||
|   # Note that if you have use_frameworks! enabled, Flipper will not work and | ||||
|   # you should disable these next few lines. | ||||
|   add_flipper_pods! | ||||
|   post_install do |installer| | ||||
|     flipper_post_install(installer) | ||||
|   end | ||||
| end | ||||
|  | ||||
| target 'example-tvOS' do | ||||
|   # Pods for example-tvOS | ||||
|  | ||||
|   target 'example-tvOSTests' do | ||||
|     inherit! :search_paths | ||||
|     # Pods for testing | ||||
|     react_native_post_install(installer) | ||||
|     __apply_Xcode_12_5_M1_post_install_workaround(installer) | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -1,333 +1,395 @@ | ||||
| PODS: | ||||
|   - AlipaySDK-iOS (15.7.4) | ||||
|   - boost-for-react-native (1.63.0) | ||||
|   - CocoaAsyncSocket (7.6.4) | ||||
|   - CocoaLibEvent (1.0.0) | ||||
|   - boost (1.76.0) | ||||
|   - CocoaAsyncSocket (7.6.5) | ||||
|   - DoubleConversion (1.1.6) | ||||
|   - FBLazyVector (0.62.2) | ||||
|   - FBReactNativeSpec (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTRequired (= 0.62.2) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - Flipper (0.33.1): | ||||
|     - Flipper-Folly (~> 2.1) | ||||
|     - Flipper-RSocket (~> 1.0) | ||||
|   - Flipper-DoubleConversion (1.1.7) | ||||
|   - Flipper-Folly (2.2.0): | ||||
|     - boost-for-react-native | ||||
|     - CocoaLibEvent (~> 1.0) | ||||
|   - FBLazyVector (0.69.3) | ||||
|   - FBReactNativeSpec (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTRequired (= 0.69.3) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Core (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - Flipper (0.125.0): | ||||
|     - Flipper-Folly (~> 2.6) | ||||
|     - Flipper-RSocket (~> 1.4) | ||||
|   - Flipper-Boost-iOSX (1.76.0.1.11) | ||||
|   - Flipper-DoubleConversion (3.2.0.1) | ||||
|   - Flipper-Fmt (7.1.7) | ||||
|   - Flipper-Folly (2.6.10): | ||||
|     - Flipper-Boost-iOSX | ||||
|     - Flipper-DoubleConversion | ||||
|     - Flipper-Fmt (= 7.1.7) | ||||
|     - Flipper-Glog | ||||
|     - OpenSSL-Universal (= 1.0.2.19) | ||||
|   - Flipper-Glog (0.3.6) | ||||
|     - libevent (~> 2.1.12) | ||||
|     - OpenSSL-Universal (= 1.1.1100) | ||||
|   - Flipper-Glog (0.5.0.5) | ||||
|   - Flipper-PeerTalk (0.0.4) | ||||
|   - Flipper-RSocket (1.1.0): | ||||
|     - Flipper-Folly (~> 2.2) | ||||
|   - FlipperKit (0.33.1): | ||||
|     - FlipperKit/Core (= 0.33.1) | ||||
|   - FlipperKit/Core (0.33.1): | ||||
|     - Flipper (~> 0.33.1) | ||||
|   - Flipper-RSocket (1.4.3): | ||||
|     - Flipper-Folly (~> 2.6) | ||||
|   - FlipperKit (0.125.0): | ||||
|     - FlipperKit/Core (= 0.125.0) | ||||
|   - FlipperKit/Core (0.125.0): | ||||
|     - Flipper (~> 0.125.0) | ||||
|     - FlipperKit/CppBridge | ||||
|     - FlipperKit/FBCxxFollyDynamicConvert | ||||
|     - FlipperKit/FBDefines | ||||
|     - FlipperKit/FKPortForwarding | ||||
|   - FlipperKit/CppBridge (0.33.1): | ||||
|     - Flipper (~> 0.33.1) | ||||
|   - FlipperKit/FBCxxFollyDynamicConvert (0.33.1): | ||||
|     - Flipper-Folly (~> 2.1) | ||||
|   - FlipperKit/FBDefines (0.33.1) | ||||
|   - FlipperKit/FKPortForwarding (0.33.1): | ||||
|     - SocketRocket (~> 0.6.0) | ||||
|   - FlipperKit/CppBridge (0.125.0): | ||||
|     - Flipper (~> 0.125.0) | ||||
|   - FlipperKit/FBCxxFollyDynamicConvert (0.125.0): | ||||
|     - Flipper-Folly (~> 2.6) | ||||
|   - FlipperKit/FBDefines (0.125.0) | ||||
|   - FlipperKit/FKPortForwarding (0.125.0): | ||||
|     - CocoaAsyncSocket (~> 7.6) | ||||
|     - Flipper-PeerTalk (~> 0.0.4) | ||||
|   - FlipperKit/FlipperKitHighlightOverlay (0.33.1) | ||||
|   - FlipperKit/FlipperKitLayoutPlugin (0.33.1): | ||||
|   - FlipperKit/FlipperKitHighlightOverlay (0.125.0) | ||||
|   - FlipperKit/FlipperKitLayoutHelpers (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|     - FlipperKit/FlipperKitHighlightOverlay | ||||
|     - FlipperKit/FlipperKitLayoutTextSearchable | ||||
|   - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|     - FlipperKit/FlipperKitHighlightOverlay | ||||
|     - FlipperKit/FlipperKitLayoutHelpers | ||||
|     - YogaKit (~> 1.18) | ||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (0.33.1) | ||||
|   - FlipperKit/FlipperKitNetworkPlugin (0.33.1): | ||||
|   - FlipperKit/FlipperKitLayoutPlugin (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|   - FlipperKit/FlipperKitReactPlugin (0.33.1): | ||||
|     - FlipperKit/FlipperKitHighlightOverlay | ||||
|     - FlipperKit/FlipperKitLayoutHelpers | ||||
|     - FlipperKit/FlipperKitLayoutIOSDescriptors | ||||
|     - FlipperKit/FlipperKitLayoutTextSearchable | ||||
|     - YogaKit (~> 1.18) | ||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0) | ||||
|   - FlipperKit/FlipperKitNetworkPlugin (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1): | ||||
|   - FlipperKit/FlipperKitReactPlugin (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|   - FlipperKit/SKIOSNetworkPlugin (0.33.1): | ||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|   - FlipperKit/SKIOSNetworkPlugin (0.125.0): | ||||
|     - FlipperKit/Core | ||||
|     - FlipperKit/FlipperKitNetworkPlugin | ||||
|   - Folly (2018.10.22.00): | ||||
|     - boost-for-react-native | ||||
|     - DoubleConversion | ||||
|     - Folly/Default (= 2018.10.22.00) | ||||
|     - glog | ||||
|   - Folly/Default (2018.10.22.00): | ||||
|     - boost-for-react-native | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|   - fmt (6.2.1) | ||||
|   - glog (0.3.5) | ||||
|   - OpenSSL-Universal (1.0.2.19): | ||||
|     - OpenSSL-Universal/Static (= 1.0.2.19) | ||||
|   - OpenSSL-Universal/Static (1.0.2.19) | ||||
|   - RCTRequired (0.62.2) | ||||
|   - RCTTypeSafety (0.62.2): | ||||
|     - FBLazyVector (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTRequired (= 0.62.2) | ||||
|     - React-Core (= 0.62.2) | ||||
|   - React (0.62.2): | ||||
|     - React-Core (= 0.62.2) | ||||
|     - React-Core/DevSupport (= 0.62.2) | ||||
|     - React-Core/RCTWebSocket (= 0.62.2) | ||||
|     - React-RCTActionSheet (= 0.62.2) | ||||
|     - React-RCTAnimation (= 0.62.2) | ||||
|     - React-RCTBlob (= 0.62.2) | ||||
|     - React-RCTImage (= 0.62.2) | ||||
|     - React-RCTLinking (= 0.62.2) | ||||
|     - React-RCTNetwork (= 0.62.2) | ||||
|     - React-RCTSettings (= 0.62.2) | ||||
|     - React-RCTText (= 0.62.2) | ||||
|     - React-RCTVibration (= 0.62.2) | ||||
|   - React-Core (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default (= 0.62.2) | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/CoreModulesHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/Default (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/DevSupport (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default (= 0.62.2) | ||||
|     - React-Core/RCTWebSocket (= 0.62.2) | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - React-jsinspector (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTActionSheetHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTAnimationHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTBlobHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTImageHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTLinkingHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTNetworkHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTSettingsHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTTextHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTVibrationHeaders (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-Core/RCTWebSocket (0.62.2): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core/Default (= 0.62.2) | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-jsiexecutor (= 0.62.2) | ||||
|     - Yoga | ||||
|   - React-CoreModules (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core/CoreModulesHeaders (= 0.62.2) | ||||
|     - React-RCTImage (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-cxxreact (0.62.2): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|   - libevent (2.1.12) | ||||
|   - OpenSSL-Universal (1.1.1100) | ||||
|   - RCT-Folly (2021.06.28.00-v2): | ||||
|     - boost | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - fmt (~> 6.2.1) | ||||
|     - glog | ||||
|     - React-jsinspector (= 0.62.2) | ||||
|   - React-jsi (0.62.2): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|     - RCT-Folly/Default (= 2021.06.28.00-v2) | ||||
|   - RCT-Folly/Default (2021.06.28.00-v2): | ||||
|     - boost | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - fmt (~> 6.2.1) | ||||
|     - glog | ||||
|     - React-jsi/Default (= 0.62.2) | ||||
|   - React-jsi/Default (0.62.2): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|   - RCTRequired (0.69.3) | ||||
|   - RCTTypeSafety (0.69.3): | ||||
|     - FBLazyVector (= 0.69.3) | ||||
|     - RCTRequired (= 0.69.3) | ||||
|     - React-Core (= 0.69.3) | ||||
|   - React (0.69.3): | ||||
|     - React-Core (= 0.69.3) | ||||
|     - React-Core/DevSupport (= 0.69.3) | ||||
|     - React-Core/RCTWebSocket (= 0.69.3) | ||||
|     - React-RCTActionSheet (= 0.69.3) | ||||
|     - React-RCTAnimation (= 0.69.3) | ||||
|     - React-RCTBlob (= 0.69.3) | ||||
|     - React-RCTImage (= 0.69.3) | ||||
|     - React-RCTLinking (= 0.69.3) | ||||
|     - React-RCTNetwork (= 0.69.3) | ||||
|     - React-RCTSettings (= 0.69.3) | ||||
|     - React-RCTText (= 0.69.3) | ||||
|     - React-RCTVibration (= 0.69.3) | ||||
|   - React-bridging (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-jsi (= 0.69.3) | ||||
|   - React-callinvoker (0.69.3) | ||||
|   - React-Codegen (0.69.3): | ||||
|     - FBReactNativeSpec (= 0.69.3) | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTRequired (= 0.69.3) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Core (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-Core (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default (= 0.69.3) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/CoreModulesHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/Default (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/DevSupport (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default (= 0.69.3) | ||||
|     - React-Core/RCTWebSocket (= 0.69.3) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-jsinspector (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTActionSheetHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTAnimationHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTBlobHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTImageHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTLinkingHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTNetworkHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTSettingsHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTTextHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTVibrationHeaders (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-Core/RCTWebSocket (0.69.3): | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Core/Default (= 0.69.3) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsiexecutor (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - Yoga | ||||
|   - React-CoreModules (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/CoreModulesHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-RCTImage (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-cxxreact (0.69.3): | ||||
|     - boost (= 1.76.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|   - React-jsiexecutor (0.62.2): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-callinvoker (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-jsinspector (= 0.69.3) | ||||
|     - React-logger (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|     - React-runtimeexecutor (= 0.69.3) | ||||
|   - React-jsi (0.69.3): | ||||
|     - boost (= 1.76.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|   - React-jsinspector (0.62.2) | ||||
|   - react-native-uiwjs-alipay (1.0.0): | ||||
|     - AlipaySDK-iOS | ||||
|     - React | ||||
|   - React-RCTActionSheet (0.62.2): | ||||
|     - React-Core/RCTActionSheetHeaders (= 0.62.2) | ||||
|   - React-RCTAnimation (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core/RCTAnimationHeaders (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTBlob (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - React-Core/RCTBlobHeaders (= 0.62.2) | ||||
|     - React-Core/RCTWebSocket (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - React-RCTNetwork (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTImage (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core/RCTImageHeaders (= 0.62.2) | ||||
|     - React-RCTNetwork (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTLinking (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - React-Core/RCTLinkingHeaders (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTNetwork (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core/RCTNetworkHeaders (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTSettings (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - RCTTypeSafety (= 0.62.2) | ||||
|     - React-Core/RCTSettingsHeaders (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - React-RCTText (0.62.2): | ||||
|     - React-Core/RCTTextHeaders (= 0.62.2) | ||||
|   - React-RCTVibration (0.62.2): | ||||
|     - FBReactNativeSpec (= 0.62.2) | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - React-Core/RCTVibrationHeaders (= 0.62.2) | ||||
|     - ReactCommon/turbomodule/core (= 0.62.2) | ||||
|   - ReactCommon/callinvoker (0.62.2): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-jsi/Default (= 0.69.3) | ||||
|   - React-jsi/Default (0.69.3): | ||||
|     - boost (= 1.76.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|   - ReactCommon/turbomodule/core (0.62.2): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|   - React-jsiexecutor (0.69.3): | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-Core (= 0.62.2) | ||||
|     - React-cxxreact (= 0.62.2) | ||||
|     - React-jsi (= 0.62.2) | ||||
|     - ReactCommon/callinvoker (= 0.62.2) | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|   - React-jsinspector (0.69.3) | ||||
|   - React-logger (0.69.3): | ||||
|     - glog | ||||
|   - React-perflogger (0.69.3) | ||||
|   - React-RCTActionSheet (0.69.3): | ||||
|     - React-Core/RCTActionSheetHeaders (= 0.69.3) | ||||
|   - React-RCTAnimation (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTAnimationHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTBlob (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTBlobHeaders (= 0.69.3) | ||||
|     - React-Core/RCTWebSocket (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-RCTNetwork (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTImage (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTImageHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-RCTNetwork (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTLinking (0.69.3): | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTLinkingHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTNetwork (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTNetworkHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTSettings (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - RCTTypeSafety (= 0.69.3) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTSettingsHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-RCTText (0.69.3): | ||||
|     - React-Core/RCTTextHeaders (= 0.69.3) | ||||
|   - React-RCTVibration (0.69.3): | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-Codegen (= 0.69.3) | ||||
|     - React-Core/RCTVibrationHeaders (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - ReactCommon/turbomodule/core (= 0.69.3) | ||||
|   - React-runtimeexecutor (0.69.3): | ||||
|     - React-jsi (= 0.69.3) | ||||
|   - ReactCommon/turbomodule/core (0.69.3): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.06.28.00-v2) | ||||
|     - React-bridging (= 0.69.3) | ||||
|     - React-callinvoker (= 0.69.3) | ||||
|     - React-Core (= 0.69.3) | ||||
|     - React-cxxreact (= 0.69.3) | ||||
|     - React-jsi (= 0.69.3) | ||||
|     - React-logger (= 0.69.3) | ||||
|     - React-perflogger (= 0.69.3) | ||||
|   - SocketRocket (0.6.0) | ||||
|   - Yoga (1.14.0) | ||||
|   - YogaKit (1.18.1): | ||||
|     - Yoga (~> 1.14) | ||||
|  | ||||
| DEPENDENCIES: | ||||
|   - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) | ||||
|   - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) | ||||
|   - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) | ||||
|   - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) | ||||
|   - Flipper (~> 0.33.1) | ||||
|   - Flipper-DoubleConversion (= 1.1.7) | ||||
|   - Flipper-Folly (~> 2.1) | ||||
|   - Flipper-Glog (= 0.3.6) | ||||
|   - Flipper-PeerTalk (~> 0.0.4) | ||||
|   - Flipper-RSocket (~> 1.0) | ||||
|   - FlipperKit (~> 0.33.1) | ||||
|   - FlipperKit/Core (~> 0.33.1) | ||||
|   - FlipperKit/CppBridge (~> 0.33.1) | ||||
|   - FlipperKit/FBCxxFollyDynamicConvert (~> 0.33.1) | ||||
|   - FlipperKit/FBDefines (~> 0.33.1) | ||||
|   - FlipperKit/FKPortForwarding (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitHighlightOverlay (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitNetworkPlugin (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitReactPlugin (~> 0.33.1) | ||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1) | ||||
|   - FlipperKit/SKIOSNetworkPlugin (~> 0.33.1) | ||||
|   - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) | ||||
|   - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) | ||||
|   - Flipper (= 0.125.0) | ||||
|   - Flipper-Boost-iOSX (= 1.76.0.1.11) | ||||
|   - Flipper-DoubleConversion (= 3.2.0.1) | ||||
|   - Flipper-Fmt (= 7.1.7) | ||||
|   - Flipper-Folly (= 2.6.10) | ||||
|   - Flipper-Glog (= 0.5.0.5) | ||||
|   - Flipper-PeerTalk (= 0.0.4) | ||||
|   - Flipper-RSocket (= 1.4.3) | ||||
|   - FlipperKit (= 0.125.0) | ||||
|   - FlipperKit/Core (= 0.125.0) | ||||
|   - FlipperKit/CppBridge (= 0.125.0) | ||||
|   - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0) | ||||
|   - FlipperKit/FBDefines (= 0.125.0) | ||||
|   - FlipperKit/FKPortForwarding (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitReactPlugin (= 0.125.0) | ||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) | ||||
|   - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) | ||||
|   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) | ||||
|   - OpenSSL-Universal (= 1.1.1100) | ||||
|   - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) | ||||
|   - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) | ||||
|   - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) | ||||
|   - React (from `../node_modules/react-native/`) | ||||
|   - React-bridging (from `../node_modules/react-native/ReactCommon`) | ||||
|   - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) | ||||
|   - React-Codegen (from `build/generated/ios`) | ||||
|   - React-Core (from `../node_modules/react-native/`) | ||||
|   - React-Core/DevSupport (from `../node_modules/react-native/`) | ||||
|   - React-Core/RCTWebSocket (from `../node_modules/react-native/`) | ||||
| @@ -336,7 +398,8 @@ DEPENDENCIES: | ||||
|   - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) | ||||
|   - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) | ||||
|   - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) | ||||
|   - react-native-uiwjs-alipay (from `../..`) | ||||
|   - React-logger (from `../node_modules/react-native/ReactCommon/logger`) | ||||
|   - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) | ||||
|   - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) | ||||
|   - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) | ||||
|   - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) | ||||
| @@ -346,43 +409,53 @@ DEPENDENCIES: | ||||
|   - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) | ||||
|   - React-RCTText (from `../node_modules/react-native/Libraries/Text`) | ||||
|   - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) | ||||
|   - ReactCommon/callinvoker (from `../node_modules/react-native/ReactCommon`) | ||||
|   - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) | ||||
|   - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) | ||||
|   - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) | ||||
|  | ||||
| SPEC REPOS: | ||||
|   trunk: | ||||
|     - AlipaySDK-iOS | ||||
|     - boost-for-react-native | ||||
|     - CocoaAsyncSocket | ||||
|     - CocoaLibEvent | ||||
|     - Flipper | ||||
|     - Flipper-Boost-iOSX | ||||
|     - Flipper-DoubleConversion | ||||
|     - Flipper-Fmt | ||||
|     - Flipper-Folly | ||||
|     - Flipper-Glog | ||||
|     - Flipper-PeerTalk | ||||
|     - Flipper-RSocket | ||||
|     - FlipperKit | ||||
|     - fmt | ||||
|     - libevent | ||||
|     - OpenSSL-Universal | ||||
|     - SocketRocket | ||||
|     - YogaKit | ||||
|  | ||||
| EXTERNAL SOURCES: | ||||
|   boost: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" | ||||
|   DoubleConversion: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" | ||||
|   FBLazyVector: | ||||
|     :path: "../node_modules/react-native/Libraries/FBLazyVector" | ||||
|   FBReactNativeSpec: | ||||
|     :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" | ||||
|   Folly: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" | ||||
|     :path: "../node_modules/react-native/React/FBReactNativeSpec" | ||||
|   glog: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" | ||||
|   RCT-Folly: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" | ||||
|   RCTRequired: | ||||
|     :path: "../node_modules/react-native/Libraries/RCTRequired" | ||||
|   RCTTypeSafety: | ||||
|     :path: "../node_modules/react-native/Libraries/TypeSafety" | ||||
|   React: | ||||
|     :path: "../node_modules/react-native/" | ||||
|   React-bridging: | ||||
|     :path: "../node_modules/react-native/ReactCommon" | ||||
|   React-callinvoker: | ||||
|     :path: "../node_modules/react-native/ReactCommon/callinvoker" | ||||
|   React-Codegen: | ||||
|     :path: build/generated/ios | ||||
|   React-Core: | ||||
|     :path: "../node_modules/react-native/" | ||||
|   React-CoreModules: | ||||
| @@ -395,8 +468,10 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsiexecutor" | ||||
|   React-jsinspector: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsinspector" | ||||
|   react-native-uiwjs-alipay: | ||||
|     :path: "../.." | ||||
|   React-logger: | ||||
|     :path: "../node_modules/react-native/ReactCommon/logger" | ||||
|   React-perflogger: | ||||
|     :path: "../node_modules/react-native/ReactCommon/reactperflogger" | ||||
|   React-RCTActionSheet: | ||||
|     :path: "../node_modules/react-native/Libraries/ActionSheetIOS" | ||||
|   React-RCTAnimation: | ||||
| @@ -415,52 +490,62 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/Libraries/Text" | ||||
|   React-RCTVibration: | ||||
|     :path: "../node_modules/react-native/Libraries/Vibration" | ||||
|   React-runtimeexecutor: | ||||
|     :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" | ||||
|   ReactCommon: | ||||
|     :path: "../node_modules/react-native/ReactCommon" | ||||
|   Yoga: | ||||
|     :path: "../node_modules/react-native/ReactCommon/yoga" | ||||
|  | ||||
| SPEC CHECKSUMS: | ||||
|   AlipaySDK-iOS: 8659cdb4403de7e5f26ad8b699864a9cbe53384c | ||||
|   boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c | ||||
|   CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 | ||||
|   CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f | ||||
|   DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 | ||||
|   FBLazyVector: 4aab18c93cd9546e4bfed752b4084585eca8b245 | ||||
|   FBReactNativeSpec: 5465d51ccfeecb7faa12f9ae0024f2044ce4044e | ||||
|   Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69 | ||||
|   Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 | ||||
|   Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 | ||||
|   Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 | ||||
|   boost: a7c83b31436843459a1961bfd74b96033dc77234 | ||||
|   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 | ||||
|   DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 | ||||
|   FBLazyVector: 1d83d91816fa605d16227a83f1b2e71c8df09d22 | ||||
|   FBReactNativeSpec: 626e35e73f83c637ff166f906d584f4c6750c251 | ||||
|   Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 | ||||
|   Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c | ||||
|   Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 | ||||
|   Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b | ||||
|   Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 | ||||
|   Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 | ||||
|   Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 | ||||
|   Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 | ||||
|   FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e | ||||
|   Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 | ||||
|   glog: 1f3da668190260b06b429bb211bfbee5cd790c28 | ||||
|   OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 | ||||
|   RCTRequired: cec6a34b3ac8a9915c37e7e4ad3aa74726ce4035 | ||||
|   RCTTypeSafety: 93006131180074cffa227a1075802c89a49dd4ce | ||||
|   React: 29a8b1a02bd764fb7644ef04019270849b9a7ac3 | ||||
|   React-Core: b12bffb3f567fdf99510acb716ef1abd426e0e05 | ||||
|   React-CoreModules: 4a9b87bbe669d6c3173c0132c3328e3b000783d0 | ||||
|   React-cxxreact: e65f9c2ba0ac5be946f53548c1aaaee5873a8103 | ||||
|   React-jsi: b6dc94a6a12ff98e8877287a0b7620d365201161 | ||||
|   React-jsiexecutor: 1540d1c01bb493ae3124ed83351b1b6a155db7da | ||||
|   React-jsinspector: 512e560d0e985d0e8c479a54a4e5c147a9c83493 | ||||
|   react-native-uiwjs-alipay: 9d1c97894c7b0357bab0cb605f2ee813e6f6abb8 | ||||
|   React-RCTActionSheet: f41ea8a811aac770e0cc6e0ad6b270c644ea8b7c | ||||
|   React-RCTAnimation: 49ab98b1c1ff4445148b72a3d61554138565bad0 | ||||
|   React-RCTBlob: a332773f0ebc413a0ce85942a55b064471587a71 | ||||
|   React-RCTImage: e70be9b9c74fe4e42d0005f42cace7981c994ac3 | ||||
|   React-RCTLinking: c1b9739a88d56ecbec23b7f63650e44672ab2ad2 | ||||
|   React-RCTNetwork: 73138b6f45e5a2768ad93f3d57873c2a18d14b44 | ||||
|   React-RCTSettings: 6e3738a87e21b39a8cb08d627e68c44acf1e325a | ||||
|   React-RCTText: fae545b10cfdb3d247c36c56f61a94cfd6dba41d | ||||
|   React-RCTVibration: 4356114dbcba4ce66991096e51a66e61eda51256 | ||||
|   ReactCommon: ed4e11d27609d571e7eee8b65548efc191116eb3 | ||||
|   Yoga: 3ebccbdd559724312790e7742142d062476b698e | ||||
|   Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 | ||||
|   FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 | ||||
|   fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 | ||||
|   glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a | ||||
|   libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 | ||||
|   OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c | ||||
|   RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a | ||||
|   RCTRequired: 66822c147facf02f7774af99825e0a31e39df42e | ||||
|   RCTTypeSafety: 309306c4e711b14a83c55c2816a6cc490ec19827 | ||||
|   React: a779632422a918b26db4f1b57225a41c14d20525 | ||||
|   React-bridging: 96055aa45f0417898d7833e251f4ae79d28acef7 | ||||
|   React-callinvoker: 02df4d620df286381ff3f99180fb24feceaf01cc | ||||
|   React-Codegen: 06613a5e753c3af2dca0d6e7dd02944a3d77c3f6 | ||||
|   React-Core: 638d54d64048aa635e7c583fb0d8425206f446b4 | ||||
|   React-CoreModules: f706ec2a1939387517cadc6ce0d2ef0f20fccb53 | ||||
|   React-cxxreact: ec183b7f6fec01e7167f38c1c64a03f68dca7fb2 | ||||
|   React-jsi: ed7dc77f5193dca9c73cec90bfec409e7ddfe401 | ||||
|   React-jsiexecutor: 1842ca163b160aeb224d2c65b2a60c393b273c67 | ||||
|   React-jsinspector: bb2605f98aada5d81f3494690da3ef3b4ff3b716 | ||||
|   React-logger: 23a50ef4c18bf9adbb51e2c979318e6b3a2e44a1 | ||||
|   React-perflogger: 39d2ba8cbcac54d1bb1d9a980dab348e96aef467 | ||||
|   React-RCTActionSheet: b1ad907a2c8f8e4d037148ca507b7f2d6ab1c66d | ||||
|   React-RCTAnimation: 914a9ba46fb6e7376f7709c7ce825d53b47ca2ee | ||||
|   React-RCTBlob: de62fd5edc5c36951f0b113bf252eb43b7131f79 | ||||
|   React-RCTImage: aa0749a8d748b34942c7e71ac5d9f42be8b70cf3 | ||||
|   React-RCTLinking: 595a9f8fbf4d6634bff28d1175b3523b61466612 | ||||
|   React-RCTNetwork: 0559fd0fccb01f89c638baa43c8d185dc8008626 | ||||
|   React-RCTSettings: 8e492a25a62f1ef6323f82ce652ae87fa59c82ca | ||||
|   React-RCTText: 17457cde6ef8832ba43c886baebb6627c5d7ed18 | ||||
|   React-RCTVibration: dd8099eb46e9cee4692934bc8cbe5e9a4f5e8d31 | ||||
|   React-runtimeexecutor: 607eb048e22a16388c908ee1f6644200e8d1e19b | ||||
|   ReactCommon: af7636436b382db7cde4583bbd642f0978e6e3ed | ||||
|   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 | ||||
|   Yoga: 44c64131616253fa83366295acdbce3d14926041 | ||||
|   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a | ||||
|  | ||||
| PODFILE CHECKSUM: 56c2537f71f3f02200d6918c542a8e89a0b422fa | ||||
| PODFILE CHECKSUM: d86e66c2874689cd5ab998282245ad4757a12721 | ||||
|  | ||||
| COCOAPODS: 1.9.3 | ||||
| COCOAPODS: 1.11.3 | ||||
|   | ||||
							
								
								
									
										11
									
								
								example/ios/_xcode.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								example/ios/_xcode.env
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| # This `.xcode.env` file is versioned and is used to source the environment | ||||
| # used when running script phases inside Xcode. | ||||
| # To customize your local environment, you can create an `.xcode.env.local` | ||||
| # file that is not versioned. | ||||
|  | ||||
| # NODE_BINARY variable contains the PATH to the node executable. | ||||
| # | ||||
| # Customize the NODE_BINARY variable here. | ||||
| # For example, to use nvm with brew, add the following line | ||||
| # . "$(brew --prefix nvm)/nvm.sh" --no-use | ||||
| export NODE_BINARY=$(command -v node) | ||||
| @@ -1,53 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>CFBundleDevelopmentRegion</key> | ||||
| 	<string>en</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
| 	<string>$(EXECUTABLE_NAME)</string> | ||||
| 	<key>CFBundleIdentifier</key> | ||||
| 	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||
| 	<key>CFBundleInfoDictionaryVersion</key> | ||||
| 	<string>6.0</string> | ||||
| 	<key>CFBundleName</key> | ||||
| 	<string>$(PRODUCT_NAME)</string> | ||||
| 	<key>CFBundlePackageType</key> | ||||
| 	<string>APPL</string> | ||||
| 	<key>CFBundleShortVersionString</key> | ||||
| 	<string>1.0</string> | ||||
| 	<key>CFBundleSignature</key> | ||||
| 	<string>????</string> | ||||
| 	<key>CFBundleVersion</key> | ||||
| 	<string>1</string> | ||||
| 	<key>LSRequiresIPhoneOS</key> | ||||
| 	<true/> | ||||
| 	<key>NSAppTransportSecurity</key> | ||||
| 	<dict> | ||||
| 		<key>NSExceptionDomains</key> | ||||
| 		<dict> | ||||
| 			<key>localhost</key> | ||||
| 			<dict> | ||||
| 				<key>NSExceptionAllowsInsecureHTTPLoads</key> | ||||
| 				<true/> | ||||
| 			</dict> | ||||
| 		</dict> | ||||
| 	</dict> | ||||
| 	<key>NSLocationWhenInUseUsageDescription</key> | ||||
| 	<string></string> | ||||
| 	<key>UILaunchStoryboardName</key> | ||||
| 	<string>LaunchScreen</string> | ||||
| 	<key>UIRequiredDeviceCapabilities</key> | ||||
| 	<array> | ||||
| 		<string>armv7</string> | ||||
| 	</array> | ||||
| 	<key>UISupportedInterfaceOrientations</key> | ||||
| 	<array> | ||||
| 		<string>UIInterfaceOrientationPortrait</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeLeft</string> | ||||
| 		<string>UIInterfaceOrientationLandscapeRight</string> | ||||
| 	</array> | ||||
| 	<key>UIViewControllerBasedStatusBarAppearance</key> | ||||
| 	<false/> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -1,24 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>CFBundleDevelopmentRegion</key> | ||||
| 	<string>en</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
| 	<string>$(EXECUTABLE_NAME)</string> | ||||
| 	<key>CFBundleIdentifier</key> | ||||
| 	<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> | ||||
| 	<key>CFBundleInfoDictionaryVersion</key> | ||||
| 	<string>6.0</string> | ||||
| 	<key>CFBundleName</key> | ||||
| 	<string>$(PRODUCT_NAME)</string> | ||||
| 	<key>CFBundlePackageType</key> | ||||
| 	<string>BNDL</string> | ||||
| 	<key>CFBundleShortVersionString</key> | ||||
| 	<string>1.0</string> | ||||
| 	<key>CFBundleSignature</key> | ||||
| 	<string>????</string> | ||||
| 	<key>CFBundleVersion</key> | ||||
| 	<string>1</string> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -3,23 +3,17 @@ | ||||
| 	archiveVersion = 1; | ||||
| 	classes = { | ||||
| 	}; | ||||
| 	objectVersion = 46; | ||||
| 	objectVersion = 54; | ||||
| 	objects = { | ||||
|  | ||||
| /* Begin PBXBuildFile section */ | ||||
| 		00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; }; | ||||
| 		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; | ||||
| 		13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; | ||||
| 		0C80B921A6F3F58F76C31292 /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-example.a */; }; | ||||
| 		13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; | ||||
| 		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||||
| 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||||
| 		2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; | ||||
| 		2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||||
| 		2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||||
| 		2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; }; | ||||
| 		524953C32B32757269BDDB07 /* libPods-example-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F351FDEB0B782C4FC829B6DD /* libPods-example-tvOSTests.a */; }; | ||||
| 		60F01FFBED55E483F11EC0A6 /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7A7A2F204B0A989E57BEEBD /* libPods-example.a */; }; | ||||
| 		75AE9E73C3619AA46CF08AF1 /* libPods-example-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DB620824D804BD4BA4FAA319 /* libPods-example-tvOS.a */; }; | ||||
| 		A6C7C98115F6576B9603B3A5 /* libPods-example-exampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 82920B5B98F9C381165BD54A /* libPods-example-exampleTests.a */; }; | ||||
| 		7699B88040F8A987B510C191 /* libPods-example-exampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-example-exampleTests.a */; }; | ||||
| 		81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; | ||||
| /* End PBXBuildFile section */ | ||||
|  | ||||
| /* Begin PBXContainerItemProxy section */ | ||||
| @@ -30,43 +24,26 @@ | ||||
| 			remoteGlobalIDString = 13B07F861A680F5B00A75B9A; | ||||
| 			remoteInfo = example; | ||||
| 		}; | ||||
| 		2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { | ||||
| 			isa = PBXContainerItemProxy; | ||||
| 			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||||
| 			proxyType = 1; | ||||
| 			remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; | ||||
| 			remoteInfo = "example-tvOS"; | ||||
| 		}; | ||||
| /* End PBXContainerItemProxy section */ | ||||
|  | ||||
| /* Begin PBXFileReference section */ | ||||
| 		008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; }; | ||||
| 		00E356EE1AD99517003FC87E /* exampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||
| 		00E356F21AD99517003FC87E /* exampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exampleTests.m; sourceTree = "<group>"; }; | ||||
| 		0A267068FB6B81D51FD7D4C5 /* Pods-example-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.debug.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = "<group>"; }; | ||||
| 		13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = example/AppDelegate.m; sourceTree = "<group>"; }; | ||||
| 		13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; }; | ||||
| 		13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = example/AppDelegate.mm; sourceTree = "<group>"; }; | ||||
| 		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = "<group>"; }; | ||||
| 		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = "<group>"; }; | ||||
| 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = "<group>"; }; | ||||
| 		2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "example-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		2E6896F62F9EE3F2734B1ACF /* Pods-example-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-example-tvOS/Pods-example-tvOS.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		432682F84776756CED076533 /* Pods-example-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		82920B5B98F9C381165BD54A /* libPods-example-exampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-exampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		A4A2B92B510EF1BFABBA0971 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		A6218796671BF84CCB4E031F /* Pods-example-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOS.release.xcconfig"; path = "Target Support Files/Pods-example-tvOS/Pods-example-tvOS.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		A7A7A2F204B0A989E57BEEBD /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		B28C1A39523FC6C2955C441A /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		B670558CB3E0ADA97B577046 /* Pods-example-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		C463C38FE6CD2515844FA8FA /* Pods-example-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.release.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		DB620824D804BD4BA4FAA319 /* libPods-example-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		19F6CBCC0A4E27FBF8BF4A61 /* libPods-example-exampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-exampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		3B4392A12AC88292D35C810B /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		5709B34CF0A7D63546082F79 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		5B7EB9410499542E8C5724F5 /* Pods-example-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.debug.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		5DCACB8F33CDC322A6C60F78 /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = example/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||||
| 		89C6BE57DB24E9ADA2F236DE /* Pods-example-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.release.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; | ||||
| 		ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; | ||||
| 		F351FDEB0B782C4FC829B6DD /* libPods-example-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| /* End PBXFileReference section */ | ||||
|  | ||||
| /* Begin PBXFrameworksBuildPhase section */ | ||||
| @@ -74,7 +51,7 @@ | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				A6C7C98115F6576B9603B3A5 /* libPods-example-exampleTests.a in Frameworks */, | ||||
| 				7699B88040F8A987B510C191 /* libPods-example-exampleTests.a in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -82,23 +59,7 @@ | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				60F01FFBED55E483F11EC0A6 /* libPods-example.a in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E4781E0B4A5D006451C7 /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				75AE9E73C3619AA46CF08AF1 /* libPods-example-tvOS.a in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				524953C32B32757269BDDB07 /* libPods-example-tvOSTests.a in Frameworks */, | ||||
| 				0C80B921A6F3F58F76C31292 /* libPods-example.a in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -125,12 +86,11 @@ | ||||
| 		13B07FAE1A68108700A75B9A /* example */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				008F07F21AC5B25A0029DE68 /* main.jsbundle */, | ||||
| 				13B07FAF1A68108700A75B9A /* AppDelegate.h */, | ||||
| 				13B07FB01A68108700A75B9A /* AppDelegate.m */, | ||||
| 				13B07FB01A68108700A75B9A /* AppDelegate.mm */, | ||||
| 				13B07FB51A68108700A75B9A /* Images.xcassets */, | ||||
| 				13B07FB61A68108700A75B9A /* Info.plist */, | ||||
| 				13B07FB11A68108700A75B9A /* LaunchScreen.xib */, | ||||
| 				81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, | ||||
| 				13B07FB71A68108700A75B9A /* main.m */, | ||||
| 			); | ||||
| 			name = example; | ||||
| @@ -140,30 +100,12 @@ | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				ED297162215061F000B7C4FE /* JavaScriptCore.framework */, | ||||
| 				ED2971642150620600B7C4FE /* JavaScriptCore.framework */, | ||||
| 				A7A7A2F204B0A989E57BEEBD /* libPods-example.a */, | ||||
| 				82920B5B98F9C381165BD54A /* libPods-example-exampleTests.a */, | ||||
| 				DB620824D804BD4BA4FAA319 /* libPods-example-tvOS.a */, | ||||
| 				F351FDEB0B782C4FC829B6DD /* libPods-example-tvOSTests.a */, | ||||
| 				5DCACB8F33CDC322A6C60F78 /* libPods-example.a */, | ||||
| 				19F6CBCC0A4E27FBF8BF4A61 /* libPods-example-exampleTests.a */, | ||||
| 			); | ||||
| 			name = Frameworks; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		7809324E0DCE45C9E15C5B90 /* Pods */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				A4A2B92B510EF1BFABBA0971 /* Pods-example.debug.xcconfig */, | ||||
| 				B28C1A39523FC6C2955C441A /* Pods-example.release.xcconfig */, | ||||
| 				0A267068FB6B81D51FD7D4C5 /* Pods-example-exampleTests.debug.xcconfig */, | ||||
| 				C463C38FE6CD2515844FA8FA /* Pods-example-exampleTests.release.xcconfig */, | ||||
| 				2E6896F62F9EE3F2734B1ACF /* Pods-example-tvOS.debug.xcconfig */, | ||||
| 				A6218796671BF84CCB4E031F /* Pods-example-tvOS.release.xcconfig */, | ||||
| 				432682F84776756CED076533 /* Pods-example-tvOSTests.debug.xcconfig */, | ||||
| 				B670558CB3E0ADA97B577046 /* Pods-example-tvOSTests.release.xcconfig */, | ||||
| 			); | ||||
| 			path = Pods; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		832341AE1AAA6A7D00B99B32 /* Libraries */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| @@ -179,7 +121,7 @@ | ||||
| 				00E356EF1AD99517003FC87E /* exampleTests */, | ||||
| 				83CBBA001A601CBA00E9B192 /* Products */, | ||||
| 				2D16E6871FA4F8E400B85C8A /* Frameworks */, | ||||
| 				7809324E0DCE45C9E15C5B90 /* Pods */, | ||||
| 				BBD78D7AC51CEA395F1C20DB /* Pods */, | ||||
| 			); | ||||
| 			indentWidth = 2; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -191,12 +133,21 @@ | ||||
| 			children = ( | ||||
| 				13B07F961A680F5B00A75B9A /* example.app */, | ||||
| 				00E356EE1AD99517003FC87E /* exampleTests.xctest */, | ||||
| 				2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */, | ||||
| 				2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */, | ||||
| 			); | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		BBD78D7AC51CEA395F1C20DB /* Pods */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				3B4392A12AC88292D35C810B /* Pods-example.debug.xcconfig */, | ||||
| 				5709B34CF0A7D63546082F79 /* Pods-example.release.xcconfig */, | ||||
| 				5B7EB9410499542E8C5724F5 /* Pods-example-exampleTests.debug.xcconfig */, | ||||
| 				89C6BE57DB24E9ADA2F236DE /* Pods-example-exampleTests.release.xcconfig */, | ||||
| 			); | ||||
| 			path = Pods; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| /* End PBXGroup section */ | ||||
|  | ||||
| /* Begin PBXNativeTarget section */ | ||||
| @@ -204,11 +155,12 @@ | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */; | ||||
| 			buildPhases = ( | ||||
| 				7B8B4D2213954B3C9A1C3D17 /* [CP] Check Pods Manifest.lock */, | ||||
| 				A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, | ||||
| 				00E356EA1AD99517003FC87E /* Sources */, | ||||
| 				00E356EB1AD99517003FC87E /* Frameworks */, | ||||
| 				00E356EC1AD99517003FC87E /* Resources */, | ||||
| 				09A0F0F6963150AE78790839 /* [CP] Copy Pods Resources */, | ||||
| 				C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, | ||||
| 				F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| @@ -224,13 +176,14 @@ | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */; | ||||
| 			buildPhases = ( | ||||
| 				E2FED7E58261D0FB4F64A5DE /* [CP] Check Pods Manifest.lock */, | ||||
| 				C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, | ||||
| 				FD10A7F022414F080027D42C /* Start Packager */, | ||||
| 				13B07F871A680F5B00A75B9A /* Sources */, | ||||
| 				13B07F8C1A680F5B00A75B9A /* Frameworks */, | ||||
| 				13B07F8E1A680F5B00A75B9A /* Resources */, | ||||
| 				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, | ||||
| 				AA8CE12E409252762B4BCFE4 /* [CP] Copy Pods Resources */, | ||||
| 				00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, | ||||
| 				E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| @@ -241,74 +194,25 @@ | ||||
| 			productReference = 13B07F961A680F5B00A75B9A /* example.app */; | ||||
| 			productType = "com.apple.product-type.application"; | ||||
| 		}; | ||||
| 		2D02E47A1E0B4A5D006451C7 /* example-tvOS */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */; | ||||
| 			buildPhases = ( | ||||
| 				01AF3800197600F41FB373E5 /* [CP] Check Pods Manifest.lock */, | ||||
| 				FD10A7F122414F3F0027D42C /* Start Packager */, | ||||
| 				2D02E4771E0B4A5D006451C7 /* Sources */, | ||||
| 				2D02E4781E0B4A5D006451C7 /* Frameworks */, | ||||
| 				2D02E4791E0B4A5D006451C7 /* Resources */, | ||||
| 				2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| 			dependencies = ( | ||||
| 			); | ||||
| 			name = "example-tvOS"; | ||||
| 			productName = "example-tvOS"; | ||||
| 			productReference = 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */; | ||||
| 			productType = "com.apple.product-type.application"; | ||||
| 		}; | ||||
| 		2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */; | ||||
| 			buildPhases = ( | ||||
| 				7630C1A36AE97C51E7F73EA0 /* [CP] Check Pods Manifest.lock */, | ||||
| 				2D02E48C1E0B4A5D006451C7 /* Sources */, | ||||
| 				2D02E48D1E0B4A5D006451C7 /* Frameworks */, | ||||
| 				2D02E48E1E0B4A5D006451C7 /* Resources */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| 			dependencies = ( | ||||
| 				2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, | ||||
| 			); | ||||
| 			name = "example-tvOSTests"; | ||||
| 			productName = "example-tvOSTests"; | ||||
| 			productReference = 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */; | ||||
| 			productType = "com.apple.product-type.bundle.unit-test"; | ||||
| 		}; | ||||
| /* End PBXNativeTarget section */ | ||||
|  | ||||
| /* Begin PBXProject section */ | ||||
| 		83CBB9F71A601CBA00E9B192 /* Project object */ = { | ||||
| 			isa = PBXProject; | ||||
| 			attributes = { | ||||
| 				LastUpgradeCheck = 1130; | ||||
| 				LastUpgradeCheck = 1210; | ||||
| 				TargetAttributes = { | ||||
| 					00E356ED1AD99517003FC87E = { | ||||
| 						CreatedOnToolsVersion = 6.2; | ||||
| 						TestTargetID = 13B07F861A680F5B00A75B9A; | ||||
| 					}; | ||||
| 					13B07F861A680F5B00A75B9A = { | ||||
| 						DevelopmentTeam = 968DSZ49MT; | ||||
| 						LastSwiftMigration = 1120; | ||||
| 					}; | ||||
| 					2D02E47A1E0B4A5D006451C7 = { | ||||
| 						CreatedOnToolsVersion = 8.2.1; | ||||
| 						ProvisioningStyle = Automatic; | ||||
| 					}; | ||||
| 					2D02E48F1E0B4A5D006451C7 = { | ||||
| 						CreatedOnToolsVersion = 8.2.1; | ||||
| 						ProvisioningStyle = Automatic; | ||||
| 						TestTargetID = 2D02E47A1E0B4A5D006451C7; | ||||
| 					}; | ||||
| 				}; | ||||
| 			}; | ||||
| 			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */; | ||||
| 			compatibilityVersion = "Xcode 3.2"; | ||||
| 			compatibilityVersion = "Xcode 12.0"; | ||||
| 			developmentRegion = en; | ||||
| 			hasScannedForEncodings = 0; | ||||
| 			knownRegions = ( | ||||
| @@ -322,8 +226,6 @@ | ||||
| 			targets = ( | ||||
| 				13B07F861A680F5B00A75B9A /* example */, | ||||
| 				00E356ED1AD99517003FC87E /* exampleTests */, | ||||
| 				2D02E47A1E0B4A5D006451C7 /* example-tvOS */, | ||||
| 				2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */, | ||||
| 			); | ||||
| 		}; | ||||
| /* End PBXProject section */ | ||||
| @@ -340,23 +242,8 @@ | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, | ||||
| 				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, | ||||
| 				13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E4791E0B4A5D006451C7 /* Resources */ = { | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E48E1E0B4A5D006451C7 /* Resources */ = { | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -369,91 +256,34 @@ | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"$(SRCROOT)/.xcode.env.local", | ||||
| 				"$(SRCROOT)/.xcode.env", | ||||
| 			); | ||||
| 			name = "Bundle React Native code and images"; | ||||
| 			outputPaths = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; | ||||
| 			shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; | ||||
| 		}; | ||||
| 		01AF3800197600F41FB373E5 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 		00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||||
| 				"${PODS_ROOT}/Manifest.lock", | ||||
| 			); | ||||
| 			name = "[CP] Check Pods Manifest.lock"; | ||||
| 			name = "[CP] Embed Pods Frameworks"; | ||||
| 			outputFileListPaths = ( | ||||
| 			); | ||||
| 			outputPaths = ( | ||||
| 				"$(DERIVED_FILE_DIR)/Pods-example-tvOS-checkManifestLockResult.txt", | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		09A0F0F6963150AE78790839 /* [CP] Copy Pods Resources */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh", | ||||
| 				"${PODS_ROOT}/AlipaySDK-iOS/AlipaySDK.bundle", | ||||
| 			); | ||||
| 			name = "[CP] Copy Pods Resources"; | ||||
| 			outputPaths = ( | ||||
| 				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AlipaySDK.bundle", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 			); | ||||
| 			name = "Bundle React Native Code And Images"; | ||||
| 			outputPaths = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; | ||||
| 		}; | ||||
| 		7630C1A36AE97C51E7F73EA0 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||||
| 				"${PODS_ROOT}/Manifest.lock", | ||||
| 			); | ||||
| 			name = "[CP] Check Pods Manifest.lock"; | ||||
| 			outputFileListPaths = ( | ||||
| 			); | ||||
| 			outputPaths = ( | ||||
| 				"$(DERIVED_FILE_DIR)/Pods-example-tvOSTests-checkManifestLockResult.txt", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		7B8B4D2213954B3C9A1C3D17 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 		A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| @@ -475,25 +305,7 @@ | ||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		AA8CE12E409252762B4BCFE4 /* [CP] Copy Pods Resources */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh", | ||||
| 				"${PODS_ROOT}/AlipaySDK-iOS/AlipaySDK.bundle", | ||||
| 			); | ||||
| 			name = "[CP] Copy Pods Resources"; | ||||
| 			outputPaths = ( | ||||
| 				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AlipaySDK.bundle", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		E2FED7E58261D0FB4F64A5DE /* [CP] Check Pods Manifest.lock */ = { | ||||
| 		C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| @@ -515,26 +327,58 @@ | ||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		FD10A7F022414F080027D42C /* Start Packager */ = { | ||||
| 		C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 			); | ||||
| 			name = "Start Packager"; | ||||
| 			name = "[CP] Embed Pods Frameworks"; | ||||
| 			outputFileListPaths = ( | ||||
| 			); | ||||
| 			outputPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n    if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n      echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n      exit 2\n    fi\n  else\n    open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n  fi\nfi\n"; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		FD10A7F122414F3F0027D42C /* Start Packager */ = { | ||||
| 		E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-input-files.xcfilelist", | ||||
| 			); | ||||
| 			name = "[CP] Copy Pods Resources"; | ||||
| 			outputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-output-files.xcfilelist", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", | ||||
| 			); | ||||
| 			name = "[CP] Copy Pods Resources"; | ||||
| 			outputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		FD10A7F022414F080027D42C /* Start Packager */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| @@ -568,28 +412,11 @@ | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, | ||||
| 				13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, | ||||
| 				13B07FC11A68108700A75B9A /* main.m in Sources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E4771E0B4A5D006451C7 /* Sources */ = { | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, | ||||
| 				2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		2D02E48C1E0B4A5D006451C7 /* Sources */ = { | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| /* End PBXSourcesBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXTargetDependency section */ | ||||
| @@ -598,29 +425,12 @@ | ||||
| 			target = 13B07F861A680F5B00A75B9A /* example */; | ||||
| 			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; | ||||
| 		}; | ||||
| 		2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { | ||||
| 			isa = PBXTargetDependency; | ||||
| 			target = 2D02E47A1E0B4A5D006451C7 /* example-tvOS */; | ||||
| 			targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; | ||||
| 		}; | ||||
| /* End PBXTargetDependency section */ | ||||
|  | ||||
| /* Begin PBXVariantGroup section */ | ||||
| 		13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { | ||||
| 			isa = PBXVariantGroup; | ||||
| 			children = ( | ||||
| 				13B07FB21A68108700A75B9A /* Base */, | ||||
| 			); | ||||
| 			name = LaunchScreen.xib; | ||||
| 			path = example; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| /* End PBXVariantGroup section */ | ||||
|  | ||||
| /* Begin XCBuildConfiguration section */ | ||||
| 		00E356F61AD99517003FC87E /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 0A267068FB6B81D51FD7D4C5 /* Pods-example-exampleTests.debug.xcconfig */; | ||||
| 			baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-example-exampleTests.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				GCC_PREPROCESSOR_DEFINITIONS = ( | ||||
| @@ -628,14 +438,18 @@ | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				INFOPLIST_FILE = exampleTests/Info.plist; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.4; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 					"@loader_path/Frameworks", | ||||
| 				); | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "com.uiwjs.example.alipay.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example"; | ||||
| 			}; | ||||
| @@ -643,19 +457,23 @@ | ||||
| 		}; | ||||
| 		00E356F71AD99517003FC87E /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = C463C38FE6CD2515844FA8FA /* Pods-example-exampleTests.release.xcconfig */; | ||||
| 			baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-example-exampleTests.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				INFOPLIST_FILE = exampleTests/Info.plist; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.4; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 					"@loader_path/Frameworks", | ||||
| 				); | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "com.uiwjs.example.alipay.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example"; | ||||
| 			}; | ||||
| @@ -663,25 +481,23 @@ | ||||
| 		}; | ||||
| 		13B07F941A680F5B00A75B9A /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = A4A2B92B510EF1BFABBA0971 /* Pods-example.debug.xcconfig */; | ||||
| 			baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-example.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				DEVELOPMENT_TEAM = 968DSZ49MT; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				GCC_PREPROCESSOR_DEFINITIONS = ( | ||||
| 					"$(inherited)", | ||||
| 					"FB_SONARKIT_ENABLED=1", | ||||
| 				); | ||||
| 				INFOPLIST_FILE = example/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = com.uiwjs; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "com.uiwjs.example.alipay.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_NAME = example; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| @@ -691,142 +507,34 @@ | ||||
| 		}; | ||||
| 		13B07F951A680F5B00A75B9A /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = B28C1A39523FC6C2955C441A /* Pods-example.release.xcconfig */; | ||||
| 			baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-example.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				DEVELOPMENT_TEAM = 968DSZ49MT; | ||||
| 				INFOPLIST_FILE = example/Info.plist; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = com.uiwjs; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "com.uiwjs.example.alipay.$(PRODUCT_NAME:rfc1034identifier)"; | ||||
| 				PRODUCT_NAME = example; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		2D02E4971E0B4A5E006451C7 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 2E6896F62F9EE3F2734B1ACF /* Pods-example-tvOS.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; | ||||
| 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				DEBUG_INFORMATION_FORMAT = dwarf; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				INFOPLIST_FILE = "example-tvOS/Info.plist"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.example-tvOS"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = appletvos; | ||||
| 				TARGETED_DEVICE_FAMILY = 3; | ||||
| 				TVOS_DEPLOYMENT_TARGET = 9.2; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		2D02E4981E0B4A5E006451C7 /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = A6218796671BF84CCB4E031F /* Pods-example-tvOS.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; | ||||
| 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				INFOPLIST_FILE = "example-tvOS/Info.plist"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.example-tvOS"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = appletvos; | ||||
| 				TARGETED_DEVICE_FAMILY = 3; | ||||
| 				TVOS_DEPLOYMENT_TARGET = 9.2; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		2D02E4991E0B4A5E006451C7 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 432682F84776756CED076533 /* Pods-example-tvOSTests.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				DEBUG_INFORMATION_FORMAT = dwarf; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				INFOPLIST_FILE = "example-tvOSTests/Info.plist"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.example-tvOSTests"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = appletvos; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS"; | ||||
| 				TVOS_DEPLOYMENT_TARGET = 10.1; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		2D02E49A1E0B4A5E006451C7 /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = B670558CB3E0ADA97B577046 /* Pods-example-tvOSTests.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||||
| 				CLANG_WARN_INFINITE_RECURSION = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				INFOPLIST_FILE = "example-tvOSTests/Info.plist"; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||||
| 				OTHER_LDFLAGS = ( | ||||
| 					"$(inherited)", | ||||
| 					"-ObjC", | ||||
| 					"-lc++", | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.example-tvOSTests"; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = appletvos; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS"; | ||||
| 				TVOS_DEPLOYMENT_TARGET = 10.1; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		83CBBA201A601CBA00E9B192 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | ||||
| @@ -844,6 +552,7 @@ | ||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||
| 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| @@ -853,6 +562,7 @@ | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_DYNAMIC_NO_PIC = NO; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| @@ -868,15 +578,25 @@ | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.4; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					/usr/lib/swift, | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				LIBRARY_SEARCH_PATHS = ( | ||||
| 					"\"$(SDKROOT)/usr/lib/swift\"", | ||||
| 					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", | ||||
| 					"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", | ||||
| 					"\"$(inherited)\"", | ||||
| 				); | ||||
| 				MTL_ENABLE_DEBUG_INFO = YES; | ||||
| 				ONLY_ACTIVE_ARCH = YES; | ||||
| 				OTHER_CPLUSPLUSFLAGS = ( | ||||
| 					"$(OTHER_CFLAGS)", | ||||
| 					"-DFOLLY_NO_CONFIG", | ||||
| 					"-DFOLLY_MOBILE=1", | ||||
| 					"-DFOLLY_USE_LIBCPP=1", | ||||
| 				); | ||||
| 				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; | ||||
| 				SDKROOT = iphoneos; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| @@ -886,7 +606,7 @@ | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||||
| 				CLANG_CXX_LIBRARY = "libc++"; | ||||
| 				CLANG_ENABLE_MODULES = YES; | ||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | ||||
| @@ -904,6 +624,7 @@ | ||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||
| 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||
| @@ -913,6 +634,7 @@ | ||||
| 				COPY_PHASE_STRIP = YES; | ||||
| 				ENABLE_NS_ASSERTIONS = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||
| @@ -921,14 +643,24 @@ | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.4; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					/usr/lib/swift, | ||||
| 					"$(inherited)", | ||||
| 				); | ||||
| 				LIBRARY_SEARCH_PATHS = ( | ||||
| 					"\"$(SDKROOT)/usr/lib/swift\"", | ||||
| 					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", | ||||
| 					"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", | ||||
| 					"\"$(inherited)\"", | ||||
| 				); | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				OTHER_CPLUSPLUSFLAGS = ( | ||||
| 					"$(OTHER_CFLAGS)", | ||||
| 					"-DFOLLY_NO_CONFIG", | ||||
| 					"-DFOLLY_MOBILE=1", | ||||
| 					"-DFOLLY_USE_LIBCPP=1", | ||||
| 				); | ||||
| 				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				VALIDATE_PRODUCT = YES; | ||||
| 			}; | ||||
| @@ -955,24 +687,6 @@ | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				2D02E4971E0B4A5E006451C7 /* Debug */, | ||||
| 				2D02E4981E0B4A5E006451C7 /* Release */, | ||||
| 			); | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				2D02E4991E0B4A5E006451C7 /* Debug */, | ||||
| 				2D02E49A1E0B4A5E006451C7 /* Release */, | ||||
| 			); | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
|   | ||||
| @@ -1,88 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Scheme | ||||
|    LastUpgradeVersion = "1130" | ||||
|    version = "1.3"> | ||||
|    <BuildAction | ||||
|       parallelizeBuildables = "YES" | ||||
|       buildImplicitDependencies = "YES"> | ||||
|       <BuildActionEntries> | ||||
|          <BuildActionEntry | ||||
|             buildForTesting = "YES" | ||||
|             buildForRunning = "YES" | ||||
|             buildForProfiling = "YES" | ||||
|             buildForArchiving = "YES" | ||||
|             buildForAnalyzing = "YES"> | ||||
|             <BuildableReference | ||||
|                BuildableIdentifier = "primary" | ||||
|                BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||||
|                BuildableName = "example-tvOS.app" | ||||
|                BlueprintName = "example-tvOS" | ||||
|                ReferencedContainer = "container:example.xcodeproj"> | ||||
|             </BuildableReference> | ||||
|          </BuildActionEntry> | ||||
|       </BuildActionEntries> | ||||
|    </BuildAction> | ||||
|    <TestAction | ||||
|       buildConfiguration = "Debug" | ||||
|       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||||
|       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||||
|       shouldUseLaunchSchemeArgsEnv = "YES"> | ||||
|       <Testables> | ||||
|          <TestableReference | ||||
|             skipped = "NO"> | ||||
|             <BuildableReference | ||||
|                BuildableIdentifier = "primary" | ||||
|                BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" | ||||
|                BuildableName = "example-tvOSTests.xctest" | ||||
|                BlueprintName = "example-tvOSTests" | ||||
|                ReferencedContainer = "container:example.xcodeproj"> | ||||
|             </BuildableReference> | ||||
|          </TestableReference> | ||||
|       </Testables> | ||||
|    </TestAction> | ||||
|    <LaunchAction | ||||
|       buildConfiguration = "Debug" | ||||
|       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||||
|       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||||
|       launchStyle = "0" | ||||
|       useCustomWorkingDirectory = "NO" | ||||
|       ignoresPersistentStateOnLaunch = "NO" | ||||
|       debugDocumentVersioning = "YES" | ||||
|       debugServiceExtension = "internal" | ||||
|       allowLocationSimulation = "YES"> | ||||
|       <BuildableProductRunnable | ||||
|          runnableDebuggingMode = "0"> | ||||
|          <BuildableReference | ||||
|             BuildableIdentifier = "primary" | ||||
|             BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||||
|             BuildableName = "example-tvOS.app" | ||||
|             BlueprintName = "example-tvOS" | ||||
|             ReferencedContainer = "container:example.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </BuildableProductRunnable> | ||||
|    </LaunchAction> | ||||
|    <ProfileAction | ||||
|       buildConfiguration = "Release" | ||||
|       shouldUseLaunchSchemeArgsEnv = "YES" | ||||
|       savedToolIdentifier = "" | ||||
|       useCustomWorkingDirectory = "NO" | ||||
|       debugDocumentVersioning = "YES"> | ||||
|       <BuildableProductRunnable | ||||
|          runnableDebuggingMode = "0"> | ||||
|          <BuildableReference | ||||
|             BuildableIdentifier = "primary" | ||||
|             BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||||
|             BuildableName = "example-tvOS.app" | ||||
|             BlueprintName = "example-tvOS" | ||||
|             ReferencedContainer = "container:example.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </BuildableProductRunnable> | ||||
|    </ProfileAction> | ||||
|    <AnalyzeAction | ||||
|       buildConfiguration = "Debug"> | ||||
|    </AnalyzeAction> | ||||
|    <ArchiveAction | ||||
|       buildConfiguration = "Release" | ||||
|       revealArchiveInOrganizer = "YES"> | ||||
|    </ArchiveAction> | ||||
| </Scheme> | ||||
| @@ -1,6 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Scheme | ||||
|    LastUpgradeVersion = "1130" | ||||
|    LastUpgradeVersion = "1210" | ||||
|    version = "1.3"> | ||||
|    <BuildAction | ||||
|       parallelizeBuildables = "YES" | ||||
| @@ -60,13 +60,6 @@ | ||||
|             ReferencedContainer = "container:example.xcodeproj"> | ||||
|          </BuildableReference> | ||||
|       </BuildableProductRunnable> | ||||
|       <EnvironmentVariables> | ||||
|          <EnvironmentVariable | ||||
|             key = "OS_ACTIVITY_MODE" | ||||
|             value = "disable" | ||||
|             isEnabled = "YES"> | ||||
|          </EnvironmentVariable> | ||||
|       </EnvironmentVariables> | ||||
|    </LaunchAction> | ||||
|    <ProfileAction | ||||
|       buildConfiguration = "Release" | ||||
|   | ||||
| @@ -1,71 +0,0 @@ | ||||
| #import "AppDelegate.h" | ||||
|  | ||||
| #import <React/RCTBridge.h> | ||||
| #import <React/RCTBundleURLProvider.h> | ||||
| #import <React/RCTRootView.h> | ||||
| #import <React/RCTLinkingManager.h> | ||||
|  | ||||
| #if DEBUG | ||||
| #import <FlipperKit/FlipperClient.h> | ||||
| #import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h> | ||||
| #import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h> | ||||
| #import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h> | ||||
| #import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h> | ||||
| #import <FlipperKitReactPlugin/FlipperKitReactPlugin.h> | ||||
|  | ||||
| static void InitializeFlipper(UIApplication *application) { | ||||
|   FlipperClient *client = [FlipperClient sharedClient]; | ||||
|   SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; | ||||
|   [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; | ||||
|   [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; | ||||
|   [client addPlugin:[FlipperKitReactPlugin new]]; | ||||
|   [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; | ||||
|   [client start]; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| @implementation AppDelegate | ||||
|  | ||||
| - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||||
| { | ||||
| #if DEBUG | ||||
|   InitializeFlipper(application); | ||||
| #endif | ||||
|  | ||||
|   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | ||||
|   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge | ||||
|                                                    moduleName:@"example" | ||||
|                                             initialProperties:nil]; | ||||
|  | ||||
|   rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; | ||||
|  | ||||
|   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | ||||
|   UIViewController *rootViewController = [UIViewController new]; | ||||
|   rootViewController.view = rootView; | ||||
|   self.window.rootViewController = rootViewController; | ||||
|   [self.window makeKeyAndVisible]; | ||||
|   return YES; | ||||
| } | ||||
|  | ||||
| - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||||
| { | ||||
| #if DEBUG | ||||
|   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; | ||||
| #else | ||||
|   return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation | ||||
| { | ||||
|   return [RCTLinkingManager application:application openURL:url | ||||
|                       sourceApplication:sourceApplication annotation:annotation]; | ||||
| } | ||||
|  | ||||
| - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options | ||||
| { | ||||
|   return [RCTLinkingManager application:application openURL:url options:options]; | ||||
| } | ||||
|  | ||||
| @end | ||||
							
								
								
									
										133
									
								
								example/ios/example/AppDelegate.mm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								example/ios/example/AppDelegate.mm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| #import "AppDelegate.h" | ||||
|  | ||||
| #import <React/RCTBridge.h> | ||||
| #import <React/RCTBundleURLProvider.h> | ||||
| #import <React/RCTRootView.h> | ||||
|  | ||||
| #import <React/RCTAppSetupUtils.h> | ||||
|  | ||||
| #if RCT_NEW_ARCH_ENABLED | ||||
| #import <React/CoreModulesPlugins.h> | ||||
| #import <React/RCTCxxBridgeDelegate.h> | ||||
| #import <React/RCTFabricSurfaceHostingProxyRootView.h> | ||||
| #import <React/RCTSurfacePresenter.h> | ||||
| #import <React/RCTSurfacePresenterBridgeAdapter.h> | ||||
| #import <ReactCommon/RCTTurboModuleManager.h> | ||||
|  | ||||
| #import <react/config/ReactNativeConfig.h> | ||||
|  | ||||
| static NSString *const kRNConcurrentRoot = @"concurrentRoot"; | ||||
|  | ||||
| @interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> { | ||||
|   RCTTurboModuleManager *_turboModuleManager; | ||||
|   RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; | ||||
|   std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig; | ||||
|   facebook::react::ContextContainer::Shared _contextContainer; | ||||
| } | ||||
| @end | ||||
| #endif | ||||
|  | ||||
| @implementation AppDelegate | ||||
|  | ||||
| - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||||
| { | ||||
|   RCTAppSetupPrepareApp(application); | ||||
|  | ||||
|   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | ||||
|  | ||||
| #if RCT_NEW_ARCH_ENABLED | ||||
|   _contextContainer = std::make_shared<facebook::react::ContextContainer const>(); | ||||
|   _reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>(); | ||||
|   _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); | ||||
|   _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; | ||||
|   bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; | ||||
| #endif | ||||
|  | ||||
|   NSDictionary *initProps = [self prepareInitialProps]; | ||||
|   UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"example", initProps); | ||||
|  | ||||
|   if (@available(iOS 13.0, *)) { | ||||
|     rootView.backgroundColor = [UIColor systemBackgroundColor]; | ||||
|   } else { | ||||
|     rootView.backgroundColor = [UIColor whiteColor]; | ||||
|   } | ||||
|  | ||||
|   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | ||||
|   UIViewController *rootViewController = [UIViewController new]; | ||||
|   rootViewController.view = rootView; | ||||
|   self.window.rootViewController = rootViewController; | ||||
|   [self.window makeKeyAndVisible]; | ||||
|   return YES; | ||||
| } | ||||
|  | ||||
| /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. | ||||
| /// | ||||
| /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html | ||||
| /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). | ||||
| /// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. | ||||
| - (BOOL)concurrentRootEnabled | ||||
| { | ||||
|   // Switch this bool to turn on and off the concurrent root | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| - (NSDictionary *)prepareInitialProps | ||||
| { | ||||
|   NSMutableDictionary *initProps = [NSMutableDictionary new]; | ||||
|  | ||||
| #ifdef RCT_NEW_ARCH_ENABLED | ||||
|   initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); | ||||
| #endif | ||||
|  | ||||
|   return initProps; | ||||
| } | ||||
|  | ||||
| - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||||
| { | ||||
| #if DEBUG | ||||
|   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; | ||||
| #else | ||||
|   return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #if RCT_NEW_ARCH_ENABLED | ||||
|  | ||||
| #pragma mark - RCTCxxBridgeDelegate | ||||
|  | ||||
| - (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge | ||||
| { | ||||
|   _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge | ||||
|                                                              delegate:self | ||||
|                                                             jsInvoker:bridge.jsCallInvoker]; | ||||
|   return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); | ||||
| } | ||||
|  | ||||
| #pragma mark RCTTurboModuleManagerDelegate | ||||
|  | ||||
| - (Class)getModuleClassFromName:(const char *)name | ||||
| { | ||||
|   return RCTCoreModulesClassProvider(name); | ||||
| } | ||||
|  | ||||
| - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||||
|                                                       jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker | ||||
| { | ||||
|   return nullptr; | ||||
| } | ||||
|  | ||||
| - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||||
|                                                      initParams: | ||||
|                                                          (const facebook::react::ObjCTurboModule::InitParams &)params | ||||
| { | ||||
|   return nullptr; | ||||
| } | ||||
|  | ||||
| - (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass | ||||
| { | ||||
|   return RCTAppSetupDefaultModuleFromClass(moduleClass); | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| @end | ||||
| @@ -1,42 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES"> | ||||
|     <dependencies> | ||||
|         <deployment identifier="iOS"/> | ||||
|         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/> | ||||
|         <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> | ||||
|     </dependencies> | ||||
|     <objects> | ||||
|         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||||
|         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||||
|         <view contentMode="scaleToFill" id="iN0-l3-epB"> | ||||
|             <rect key="frame" x="0.0" y="0.0" width="480" height="480"/> | ||||
|             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||
|             <subviews> | ||||
|                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye"> | ||||
|                     <rect key="frame" x="20" y="439" width="441" height="21"/> | ||||
|                     <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||||
|                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | ||||
|                     <nil key="highlightedColor"/> | ||||
|                 </label> | ||||
|                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="example" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX"> | ||||
|                     <rect key="frame" x="20" y="140" width="441" height="43"/> | ||||
|                     <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | ||||
|                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | ||||
|                     <nil key="highlightedColor"/> | ||||
|                 </label> | ||||
|             </subviews> | ||||
|             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||||
|             <constraints> | ||||
|                 <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/> | ||||
|                 <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/> | ||||
|                 <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/> | ||||
|                 <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/> | ||||
|                 <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/> | ||||
|                 <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/> | ||||
|             </constraints> | ||||
|             <nil key="simulatedStatusBarMetrics"/> | ||||
|             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> | ||||
|             <point key="canvasLocation" x="548" y="455"/> | ||||
|         </view> | ||||
|     </objects> | ||||
| </document> | ||||
| @@ -2,37 +2,52 @@ | ||||
|   "images" : [ | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "29x29", | ||||
|       "scale" : "2x" | ||||
|       "scale" : "2x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "29x29", | ||||
|       "scale" : "3x" | ||||
|       "scale" : "3x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "40x40", | ||||
|       "scale" : "2x" | ||||
|       "scale" : "2x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "40x40", | ||||
|       "scale" : "3x" | ||||
|       "scale" : "3x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "60x60", | ||||
|       "scale" : "2x" | ||||
|       "scale" : "2x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "size" : "60x60", | ||||
|       "scale" : "3x" | ||||
|       "scale" : "3x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "scale" : "2x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "iphone", | ||||
|       "scale" : "3x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "ios-marketing", | ||||
|       "scale" : "1x", | ||||
|       "size" : "1024x1024" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "version" : 1, | ||||
|     "author" : "xcode" | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| 	<key>CFBundleDevelopmentRegion</key> | ||||
| 	<string>en</string> | ||||
| 	<key>CFBundleDisplayName</key> | ||||
| 	<string>example</string> | ||||
| 	<string>支付宝SDK实例</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
| 	<string>$(EXECUTABLE_NAME)</string> | ||||
| 	<key>CFBundleIdentifier</key> | ||||
| @@ -43,8 +43,6 @@ | ||||
| 	<true/> | ||||
| 	<key>NSAppTransportSecurity</key> | ||||
| 	<dict> | ||||
| 		<key>NSAllowsArbitraryLoads</key> | ||||
| 		<true/> | ||||
| 		<key>NSExceptionDomains</key> | ||||
| 		<dict> | ||||
| 			<key>localhost</key> | ||||
|   | ||||
							
								
								
									
										47
									
								
								example/ios/example/LaunchScreen.storyboard
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								example/ios/example/LaunchScreen.storyboard
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||||
|     <device id="retina4_7" orientation="portrait" appearance="light"/> | ||||
|     <dependencies> | ||||
|         <deployment identifier="iOS"/> | ||||
|         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> | ||||
|         <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||||
|         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||||
|     </dependencies> | ||||
|     <scenes> | ||||
|         <!--View Controller--> | ||||
|         <scene sceneID="EHf-IW-A2E"> | ||||
|             <objects> | ||||
|                 <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||||
|                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||||
|                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||||
|                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||
|                         <subviews> | ||||
|                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="example" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb"> | ||||
|                                 <rect key="frame" x="0.0" y="202" width="375" height="43"/> | ||||
|                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | ||||
|                                 <nil key="highlightedColor"/> | ||||
|                             </label> | ||||
|                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu"> | ||||
|                                 <rect key="frame" x="0.0" y="626" width="375" height="21"/> | ||||
|                                 <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||||
|                                 <nil key="highlightedColor"/> | ||||
|                             </label> | ||||
|                         </subviews> | ||||
|                         <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||||
|                         <constraints> | ||||
|                             <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/> | ||||
|                             <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/> | ||||
|                             <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/> | ||||
|                             <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/> | ||||
|                             <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/> | ||||
|                             <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/> | ||||
|                         </constraints> | ||||
|                         <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/> | ||||
|                     </view> | ||||
|                 </viewController> | ||||
|                 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||||
|             </objects> | ||||
|             <point key="canvasLocation" x="52.173913043478265" y="375"/> | ||||
|         </scene> | ||||
|     </scenes> | ||||
| </document> | ||||
| @@ -2,7 +2,8 @@ | ||||
|  | ||||
| #import "AppDelegate.h" | ||||
|  | ||||
| int main(int argc, char * argv[]) { | ||||
| int main(int argc, char *argv[]) | ||||
| { | ||||
|   @autoreleasepool { | ||||
|     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); | ||||
|   } | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
|  | ||||
| @implementation exampleTests | ||||
|  | ||||
| - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test | ||||
| - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test | ||||
| { | ||||
|   if (test(view)) { | ||||
|     return YES; | ||||
| @@ -34,23 +34,25 @@ | ||||
|  | ||||
|   __block NSString *redboxError = nil; | ||||
| #ifdef DEBUG | ||||
|   RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { | ||||
|     if (level >= RCTLogLevelError) { | ||||
|       redboxError = message; | ||||
|     } | ||||
|   }); | ||||
|   RCTSetLogFunction( | ||||
|       ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { | ||||
|         if (level >= RCTLogLevelError) { | ||||
|           redboxError = message; | ||||
|         } | ||||
|       }); | ||||
| #endif | ||||
|  | ||||
|   while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { | ||||
|     [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||||
|     [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||||
|  | ||||
|     foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { | ||||
|       if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { | ||||
|         return YES; | ||||
|       } | ||||
|       return NO; | ||||
|     }]; | ||||
|     foundElement = [self findSubviewInView:vc.view | ||||
|                                   matching:^BOOL(UIView *view) { | ||||
|                                     if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { | ||||
|                                       return YES; | ||||
|                                     } | ||||
|                                     return NO; | ||||
|                                   }]; | ||||
|   } | ||||
|  | ||||
| #ifdef DEBUG | ||||
| @@ -61,5 +63,4 @@ | ||||
|   XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); | ||||
| } | ||||
|  | ||||
|  | ||||
| @end | ||||
|   | ||||
| @@ -1,28 +1,15 @@ | ||||
| // metro.config.js | ||||
| // | ||||
| // with multiple workarounds for this issue with symlinks: | ||||
| // https://github.com/facebook/metro/issues/1 | ||||
| // | ||||
| // with thanks to @johnryan (<https://github.com/johnryan>) | ||||
| // for the pointers to multiple workaround solutions here: | ||||
| // https://github.com/facebook/metro/issues/1#issuecomment-541642857 | ||||
| // | ||||
| // see also this discussion: | ||||
| // https://github.com/brodybits/create-react-native-module/issues/232 | ||||
|  | ||||
| const path = require('path') | ||||
| /** | ||||
|  * Metro configuration for React Native | ||||
|  * https://github.com/facebook/react-native | ||||
|  */ | ||||
|  | ||||
| module.exports = { | ||||
|   // workaround for an issue with symlinks encountered starting with | ||||
|   // metro@0.55 / React Native 0.61 | ||||
|   // (not needed with React Native 0.60 / metro@0.54) | ||||
|   resolver: { | ||||
|     extraNodeModules: new Proxy( | ||||
|       {}, | ||||
|       { get: (_, name) => path.resolve('.', 'node_modules', name) } | ||||
|     ) | ||||
|   transformer: { | ||||
|     getTransformOptions: async () => ({ | ||||
|       transform: { | ||||
|         experimentalImportSupport: false, | ||||
|         inlineRequires: true, | ||||
|       }, | ||||
|     }), | ||||
|   }, | ||||
|  | ||||
|   // quick workaround for another issue with symlinks | ||||
|   watchFolders: ['.', '..'] | ||||
| } | ||||
| }; | ||||
|   | ||||
| @@ -10,19 +10,19 @@ | ||||
|     "lint": "eslint ." | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "react": "16.11.0", | ||||
|     "react-native": "0.62.2", | ||||
|     "@uiwjs/react-native-alipay": "link:../" | ||||
|     "@uiw/react-native-alipay": "link:../", | ||||
|     "react": "18.0.0", | ||||
|     "react-native": "0.69.3" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@babel/core": "^7.6.2", | ||||
|     "@babel/runtime": "^7.6.2", | ||||
|     "@react-native-community/eslint-config": "^0.0.5", | ||||
|     "babel-jest": "^24.9.0", | ||||
|     "eslint": "^6.5.1", | ||||
|     "jest": "^24.9.0", | ||||
|     "metro-react-native-babel-preset": "^0.58.0", | ||||
|     "react-test-renderer": "16.11.0" | ||||
|     "@babel/core": "^7.12.9", | ||||
|     "@babel/runtime": "^7.12.5", | ||||
|     "@react-native-community/eslint-config": "^2.0.0", | ||||
|     "babel-jest": "^26.6.3", | ||||
|     "eslint": "^7.32.0", | ||||
|     "jest": "^26.6.3", | ||||
|     "metro-react-native-babel-preset": "^0.70.3", | ||||
|     "react-test-renderer": "18.0.0" | ||||
|   }, | ||||
|   "jest": { | ||||
|     "preset": "react-native" | ||||
|   | ||||
							
								
								
									
										7260
									
								
								example/yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										7260
									
								
								example/yarn.lock
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										143
									
								
								index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										143
									
								
								index.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,11 @@ | ||||
| /// <reference no-default-lib="true" /> | ||||
| /// <reference lib="esnext" /> | ||||
|  | ||||
| /** | ||||
|  * 支付宝端支付 | ||||
|  * 支付宝回调结果, 详情见 https://docs.open.alipay.com/204/105301 | ||||
|  */ | ||||
| export interface AliOrderResult { | ||||
| export interface OrderResultStr { | ||||
|   alipay_trade_app_pay_response: { | ||||
|     /** | ||||
|      * 长度:64,商户网站唯一订单号	70501111111S001111119 | ||||
| @@ -46,51 +48,65 @@ export interface AliOrderResult { | ||||
|   sign_type: 'RSA2' | 'RSA'; | ||||
| } | ||||
|  | ||||
|  | ||||
| interface OrderResult { | ||||
| /** | ||||
|  * 支付订单返回结果 | ||||
|  * @returns 成功返回 | ||||
|  *  | ||||
|  * ```json | ||||
|  * { | ||||
|  *   result: '{"alipay_trade_app_pay_response":{"code":"10000","msg":"Success","app_id":"2021001172656340","auth_app_id":"2021001172656340","charset":"UTF-8","timestamp":"2020-07-08 21:30:14","out_trade_no":"123123213123214","total_amount":"0.01","trade_no":"2020070822001414841426413774","seller_id":"2088421915791034"},"sign":"LY7wCsNLp+QnDqCq6VelY/RvyK7ZGY8wsXoKvS+Or7JjONLDUx5P6lDgqRKkpkng7br3y6GZzfGKaZ88Tf4eMnBMKyqU+huR2Um47xUxP383njvHlxuQZsSTLQZRswy4wmb/fPkFfvyH6Or6+oj0eboePOTu63bNr+h03w0QnP4znuHpfRuoVgWpsYh/6B1DL+4xfWRKJ21zm1SV9Feo9RWqnyTaGZyFVi6IKge0dUCYs9hXju95fOUVUOx5YflOFtSEnZafY9Ls4FCRQE1ANkjaKiKIE0+c4c4sEVEf/9Dwh88N+aSQOoLT+AV4RpjMoA8hF2k+vv2OKNeqr6SYGQ==","sign_type":"RSA2"}', | ||||
|  *   resultStatus: '9000', | ||||
|  *   memo: '' | ||||
|  * } | ||||
|  * ``` | ||||
|  *  | ||||
|  * @returns 错误返回 | ||||
|  *  | ||||
|  * ```json | ||||
|  * { | ||||
|  *   memo: "Error Domain=系统繁忙,请稍后再试 Code=1000 \"(null)\"", | ||||
|  *   result: "", | ||||
|  *   resultStatus: "4000", | ||||
|  * } | ||||
|  * ``` | ||||
|  */ | ||||
| export interface OrderResult { | ||||
|   /** | ||||
|    * @callback AliOrderResult | ||||
|    * 支付返回结果: | ||||
|    * 支付宝支付返回结果文档地址:https://opendocs.alipay.com/open/204/105301#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E7%A4%BA%E4%BE%8B%EF%BC%88iOS%7CAndroid%EF%BC%89   | ||||
|    * 支付宝支付返回结果,[支付宝文档地址](https://opendocs.alipay.com/open/204/105301#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E7%A4%BA%E4%BE%8B%EF%BC%88iOS%7CAndroid%EF%BC%89)   | ||||
|    * 支付返回结果字符串通过 `JSON.parse` 进行转换为对象 {@link OrderResultStr} | ||||
|    * @typeParam OrderResultStr | ||||
|    * @example | ||||
|    *  | ||||
|    * ```json | ||||
|    * '{"alipay_trade_app_pay_response":{"code":"10000","msg":"Success","app_id":"2021001172656340","auth_app_id":"2021001172656340","charset":"UTF-8","timestamp":"2020-07-08 21:30:14","out_trade_no":"123123213123214","total_amount":"0.01","trade_no":"2020070822001414841426413774","seller_id":"2088421915791034"},"sign":"LY7wCsNLp+QnDqCq6VelY/RvyK7ZGY8wsXoKvS+Or7JjONLDUx5P6lDgqRKkpkng7br3y6GZzfGKaZ88Tf4eMnBMKyqU+huR2Um47xUxP383njvHlxuQZsSTLQZRswy4wmb/fPkFfvyH6Or6+oj0eboePOTu63bNr+h03w0QnP4znuHpfRuoVgWpsYh/6B1DL+4xfWRKJ21zm1SV9Feo9RWqnyTaGZyFVi6IKge0dUCYs9hXju95fOUVUOx5YflOFtSEnZafY9Ls4FCRQE1ANkjaKiKIE0+c4c4sEVEf/9Dwh88N+aSQOoLT+AV4RpjMoA8hF2k+vv2OKNeqr6SYGQ==","sign_type":"RSA2"}' | ||||
|    * ``` | ||||
|    *  | ||||
|    */ | ||||
|   result?: string; | ||||
|   /** | ||||
|    * 9000	订单支付成功   | ||||
|    * 8000	正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态   | ||||
|    * 4000	订单支付失败   | ||||
|    * 5000	重复请求   | ||||
|    * 6001	用户中途取消   | ||||
|    * 6002	网络连接出错   | ||||
|    * 6004	支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态   | ||||
|    * 其它	其它支付错误 | ||||
|    * 错误状态码 | ||||
|    * - 9000	订单支付成功   | ||||
|    * - 8000	正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态   | ||||
|    * - 4000	订单支付失败   | ||||
|    * - 5000	重复请求   | ||||
|    * - 6001	用户中途取消   | ||||
|    * - 6002	网络连接出错   | ||||
|    * - 6004	支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态   | ||||
|    * - 其它	其它支付错误 | ||||
|    */ | ||||
|   resultStatus?: '9000' | '8000' | '4000' | '5000' | '6001' | '6002' | '6004' | string; | ||||
|   /** | ||||
|    * "Error Domain=系统繁忙,请稍后再试 Code=1000 "(null)"" | ||||
|    * 优惠券备注信息 | ||||
|    * "Error Domain=系统繁忙,请稍后再试 Code=1000 "(null)"" | ||||
|    */ | ||||
|   memo: string; | ||||
| } | ||||
|  | ||||
| // 错误返回 | ||||
| // { | ||||
| //   memo: "Error Domain=系统繁忙,请稍后再试 Code=1000 \"(null)\"", | ||||
| //   result: "", | ||||
| //   resultStatus: "4000", | ||||
| // } | ||||
| // 成功返回 | ||||
| // {  | ||||
| //   result: '{"alipay_trade_app_pay_response":{"code":"10000","msg":"Success","app_id":"2021001172656340","auth_app_id":"2021001172656340","charset":"UTF-8","timestamp":"2020-07-08 21:30:14","out_trade_no":"123123213123214","total_amount":"0.01","trade_no":"2020070822001414841426413774","seller_id":"2088421915791034"},"sign":"LY7wCsNLp+QnDqCq6VelY/RvyK7ZGY8wsXoKvS+Or7JjONLDUx5P6lDgqRKkpkng7br3y6GZzfGKaZ88Tf4eMnBMKyqU+huR2Um47xUxP383njvHlxuQZsSTLQZRswy4wmb/fPkFfvyH6Or6+oj0eboePOTu63bNr+h03w0QnP4znuHpfRuoVgWpsYh/6B1DL+4xfWRKJ21zm1SV9Feo9RWqnyTaGZyFVi6IKge0dUCYs9hXju95fOUVUOx5YflOFtSEnZafY9Ls4FCRQE1ANkjaKiKIE0+c4c4sEVEf/9Dwh88N+aSQOoLT+AV4RpjMoA8hF2k+vv2OKNeqr6SYGQ==","sign_type":"RSA2"}', | ||||
| //   resultStatus: '9000', | ||||
| //   memo: '' | ||||
| // } | ||||
|  | ||||
| /** | ||||
|  * 快速登录授权 | ||||
|  * https://opendocs.alipay.com/open/218/105327#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E8%AF%B4%E6%98%8E   | ||||
|  * 快速登录授权,[支付宝文档](https://opendocs.alipay.com/open/218/105327#%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%E8%AF%B4%E6%98%8E) | ||||
|  *  | ||||
|  */ | ||||
| interface AuthResult { | ||||
| export interface AuthResult { | ||||
|   /** | ||||
|    * 长度:144,本次操作返回的结果数据。 | ||||
|    * - `result_code` 具体状态码值请参见“result_code状态代码”。仅当resultStatus为“9000”且result_code为“200”时,代表授权成功。 | ||||
| @@ -111,36 +127,35 @@ interface AuthResult { | ||||
|    */ | ||||
|   memo:	string;  | ||||
| } | ||||
|  | ||||
|  | ||||
| export const Alipay: { | ||||
|   /** | ||||
|    * 支付 | ||||
|    * @param payInfo 支付详情 | ||||
|    * @returns result 支付宝回调结果 https://docs.open.alipay.com/204/105301 | ||||
|    */ | ||||
|   alipay: (payInfo: string) => Promise<OrderResult>; | ||||
|   /** | ||||
|    * 快速登录授权 | ||||
|    * @param authInfoStr 验证详情 | ||||
|    * @returns result 支付宝回调结果 https://opendocs.alipay.com/open/218/105327 | ||||
|    */ | ||||
|   authInfo: (authInfoStr: string) => Promise<AuthResult>; | ||||
|   /** | ||||
|    *  获取当前 SDK 版本号 | ||||
|    *  @return 当前 SDK 版本字符串 | ||||
|    */ | ||||
|   getVersion: () => Promise<string>; | ||||
|   /** | ||||
|    * 设置支付宝跳转Scheme,仅 iOS | ||||
|    * @param scheme scheme = `ap` + `APPID` | ||||
|    */ | ||||
|   setAlipayScheme: (scheme: string) => void; | ||||
|   /** | ||||
|    * 设置支付宝沙箱环境,仅 Android | ||||
|    * @param isSandBox | ||||
|    */ | ||||
|   setAlipaySandbox: (isSandbox: boolean) => void; | ||||
| }; | ||||
|  | ||||
| export default Alipay; | ||||
| /** | ||||
|  * 支付 | ||||
|  * @param payInfo 支付详情,是后台拼接好的支付参数 | ||||
|  * @returns result 支付宝回调结果 https://docs.open.alipay.com/204/105301 | ||||
|  */ | ||||
| export function alipay(payInfo: string): Promise<OrderResult>; | ||||
| /** | ||||
|  * 快速登录授权 | ||||
|  * - ⚠️ 注意授权成功返回结果是一个字符串,[返回内容](https://github.com/uiwjs/react-native-alipay/blob/74140a294e850884ed1851b9d2c2d2c00ee75003/index.d.ts#L89-L113) | ||||
|  * - ⚠️ 支付宝需要设置 Scheme 和 iOS添加原生代码,才能支持验证[回弹商家APP]的功能 | ||||
|  * - ⚠️ 支付宝 `管理中心-支付宝开放平台` 需要签约 `APP支付宝登录` | ||||
|  * @param authInfoStr 验证详情 | ||||
|  * @returns result 支付宝回调结果 https://opendocs.alipay.com/open/218/105327 | ||||
|  */ | ||||
| export function authInfo(authInfoStr: string): Promise<AuthResult>; | ||||
| /** | ||||
|  *  获取当前 SDK 版本号 | ||||
|  *  @return 当前 SDK 版本字符串 | ||||
|  */ | ||||
| export function getVersion(): Promise<string>; | ||||
| /** | ||||
|  * 设置支付宝跳转Scheme,仅 iOS | ||||
|  * @param scheme scheme = `ap` + `APPID` | ||||
|  * @platform ios | ||||
|  */ | ||||
| export function setAlipayScheme(scheme: string): void; | ||||
| /** | ||||
|  * 设置支付宝沙箱环境,仅 Android | ||||
|  * @param isSandBox | ||||
|  * @platform android | ||||
|  */ | ||||
| export function setAlipaySandbox(isSandbox: boolean): void; | ||||
							
								
								
									
										12
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								index.js
									
									
									
									
									
								
							| @@ -7,7 +7,7 @@ export default class Alipay { | ||||
|    * @returns result 支付宝回调结果 https://docs.open.alipay.com/204/105301 | ||||
|    */ | ||||
|   static alipay(orderInfo) { | ||||
|     return NativeModules.Alipay.alipay(orderInfo); | ||||
|     return NativeModules.RNAlipay.alipay(orderInfo); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -16,7 +16,7 @@ export default class Alipay { | ||||
|    * @returns result 支付宝回调结果 详情见 https://opendocs.alipay.com/open/218/105325 | ||||
|    */ | ||||
|   static authInfo(authInfoStr) { | ||||
|     return NativeModules.Alipay.authInfo(authInfoStr) | ||||
|     return NativeModules.RNAlipay.authInfo(authInfoStr) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -24,26 +24,28 @@ export default class Alipay { | ||||
|    *  @return 当前版本字符串 | ||||
|    */ | ||||
|   static getVersion() { | ||||
|     return NativeModules.Alipay.getVersion() | ||||
|     return NativeModules.RNAlipay.getVersion() | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 设置支付宝跳转Scheme,仅 iOS | ||||
|    * @param scheme | ||||
|    * @platform ios | ||||
|    */ | ||||
|   static setAlipayScheme(scheme) { | ||||
|     if (Platform.OS === 'ios') { | ||||
|       NativeModules.Alipay.setAlipayScheme(scheme); | ||||
|       NativeModules.RNAlipay.setAlipayScheme(scheme); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 设置支付宝沙箱环境,仅 Android | ||||
|    * @param isSandBox | ||||
|    * @platform android | ||||
|    */ | ||||
|   static setAlipaySandbox(isSandBox) { | ||||
|     if (Platform.OS === 'android') { | ||||
|       NativeModules.Alipay.setAlipaySandbox(isSandBox); | ||||
|       NativeModules.RNAlipay.setAlipaySandbox(isSandBox); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| #import <React/RCTBridgeModule.h> | ||||
|  | ||||
| @interface Alipay : NSObject <RCTBridgeModule> | ||||
|  | ||||
| @end | ||||
										
											Binary file not shown.
										
									
								
							| @@ -9,7 +9,7 @@ | ||||
|  | ||||
| //////////////////////////////////////////////////////// | ||||
| ///////////////// 支付宝标准版本支付SDK /////////////////// | ||||
| ///////// version:15.7.7  motify:2020.07.02/////////// | ||||
| ///////// version:15.8.08  motify:2022.02.15/////////// | ||||
| //////////////////////////////////////////////////////// | ||||
|  | ||||
| #import <UIKit/UIKit.h> | ||||
|   | ||||
							
								
								
									
										5
									
								
								ios/RNAlipay.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								ios/RNAlipay.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #import <React/RCTBridgeModule.h> | ||||
|  | ||||
| @interface RNAlipay : NSObject <RCTBridgeModule> | ||||
|  | ||||
| @end | ||||
| @@ -1,16 +1,15 @@ | ||||
| #import "Alipay.h" | ||||
| #import "RNAlipay.h" | ||||
| #import <AlipaySDK/AlipaySDK.h> | ||||
| 
 | ||||
| 
 | ||||
| @interface Alipay () | ||||
| @interface RNAlipay () | ||||
| @property (nonatomic, copy) RCTPromiseResolveBlock payOrderResolve; | ||||
| @end | ||||
| 
 | ||||
| 
 | ||||
| @implementation Alipay | ||||
| @implementation RNAlipay | ||||
| { | ||||
|     NSString *alipayScheme; | ||||
|     RCTResponseSenderBlock alipayCallBack; | ||||
| } | ||||
| 
 | ||||
| RCT_EXPORT_MODULE() | ||||
| @@ -84,6 +83,7 @@ RCT_EXPORT_MODULE() | ||||
|     return NO; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| RCT_EXPORT_METHOD(setAlipayScheme:(NSString *)scheme) { | ||||
|     alipayScheme = scheme; | ||||
| } | ||||
							
								
								
									
										44
									
								
								ios/RNAlipay.podspec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								ios/RNAlipay.podspec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| require "json" | ||||
|  | ||||
| package = JSON.parse(File.read(File.join(__dir__, '..', "package.json"))) | ||||
|  | ||||
| Pod::Spec.new do |s| | ||||
|   s.name         = "RNAlipay" | ||||
|   s.version      = package["version"] | ||||
|   s.summary      = package["description"] | ||||
|   s.description  = <<-DESC | ||||
|                       Alipay SDK for React Native | ||||
|                    DESC | ||||
|   s.homepage     = package['repository']['url'] | ||||
|   # brief license entry: | ||||
|   s.license      = package["license"] | ||||
|   s.author       = { package["author"]["name"] => package["author"]["email"] } | ||||
|   # optional - use expanded license entry instead: | ||||
|   # s.license    = { :type => "MIT", :file => "LICENSE" } | ||||
|   s.platforms    = { :ios => "9.0" } | ||||
|   s.source       = { :git => "https://github.com/uiwjs/react-native-alipay.git", :tag => "#{s.version}" } | ||||
|  | ||||
|   s.source_files = "**/*.{h,c,m,swift}" | ||||
|   # s.source_files = "**/*.{h,m}" | ||||
|   s.requires_arc = true | ||||
|  | ||||
|   s.frameworks = "UIKit", | ||||
|   s.frameworks = "Foundation", | ||||
|   s.frameworks = "CFNetwork", | ||||
|   s.frameworks = "SystemConfiguration", | ||||
|   s.frameworks = "QuartzCore", | ||||
|   s.frameworks = "CoreGraphics", | ||||
|   s.frameworks = "CoreMotion", | ||||
|   s.frameworks = "CoreTelephony", | ||||
|   s.frameworks = "CoreText", | ||||
|   s.frameworks = "WebKit" | ||||
|  | ||||
|   s.dependency "React" | ||||
|   s.resource = 'AlipaySDK.bundle' | ||||
|   # s.source_files  = "AlipaySDKiOS/AlipaySDK.framework/**/*" | ||||
|   s.vendored_frameworks = 'AlipaySDK.framework' | ||||
|   s.library = "c++", "z" | ||||
|   # ... | ||||
|   # s.dependency "..." | ||||
| end | ||||
|  | ||||
| @@ -7,7 +7,7 @@ | ||||
| 	objects = { | ||||
| 
 | ||||
| /* Begin PBXBuildFile section */ | ||||
| 		B954DB6F24B48377005C7268 /* AlipaySDK in Frameworks */ = {isa = PBXBuildFile; fileRef = B954DB6E24B48377005C7268 /* AlipaySDK */; }; | ||||
| 		B9EB6BD424BDF5E6001A2514 /* AlipaySDK in Frameworks */ = {isa = PBXBuildFile; fileRef = B9EB6BCF24BDF342001A2514 /* AlipaySDK */; }; | ||||
| /* End PBXBuildFile section */ | ||||
| 
 | ||||
| /* Begin PBXCopyFilesBuildPhase section */ | ||||
| @@ -23,9 +23,10 @@ | ||||
| /* End PBXCopyFilesBuildPhase section */ | ||||
| 
 | ||||
| /* Begin PBXFileReference section */ | ||||
| 		134814201AA4EA6300B7C361 /* libAlipay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAlipay.a; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		B954DB6C24B48352005C7268 /* AlipaySDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = AlipaySDK.bundle; sourceTree = "<group>"; }; | ||||
| 		B954DB6E24B48377005C7268 /* AlipaySDK */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; name = AlipaySDK; path = AlipaySDK.framework/AlipaySDK; sourceTree = "<group>"; }; | ||||
| 		134814201AA4EA6300B7C361 /* libRNAlipay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNAlipay.a; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		B9EB6BCD24BDF163001A2514 /* AlipaySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AlipaySDK.framework; sourceTree = "<group>"; }; | ||||
| 		B9EB6BCF24BDF342001A2514 /* AlipaySDK */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; name = AlipaySDK; path = AlipaySDK.framework/AlipaySDK; sourceTree = "<group>"; }; | ||||
| 		B9EB6BD524BDF691001A2514 /* AlipaySDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = AlipaySDK.bundle; sourceTree = "<group>"; }; | ||||
| /* End PBXFileReference section */ | ||||
| 
 | ||||
| /* Begin PBXFrameworksBuildPhase section */ | ||||
| @@ -33,7 +34,7 @@ | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				B954DB6F24B48377005C7268 /* AlipaySDK in Frameworks */, | ||||
| 				B9EB6BD424BDF5E6001A2514 /* AlipaySDK in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -43,7 +44,7 @@ | ||||
| 		134814211AA4EA7D00B7C361 /* Products */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				134814201AA4EA6300B7C361 /* libAlipay.a */, | ||||
| 				134814201AA4EA6300B7C361 /* libRNAlipay.a */, | ||||
| 			); | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -52,15 +53,16 @@ | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				134814211AA4EA7D00B7C361 /* Products */, | ||||
| 				B954DB6B24B48352005C7268 /* Frameworks */, | ||||
| 				B9EB6BCC24BDF163001A2514 /* Frameworks */, | ||||
| 			); | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		B954DB6B24B48352005C7268 /* Frameworks */ = { | ||||
| 		B9EB6BCC24BDF163001A2514 /* Frameworks */ = { | ||||
| 			isa = PBXGroup; | ||||
| 			children = ( | ||||
| 				B954DB6E24B48377005C7268 /* AlipaySDK */, | ||||
| 				B954DB6C24B48352005C7268 /* AlipaySDK.bundle */, | ||||
| 				B9EB6BD524BDF691001A2514 /* AlipaySDK.bundle */, | ||||
| 				B9EB6BCF24BDF342001A2514 /* AlipaySDK */, | ||||
| 				B9EB6BCD24BDF163001A2514 /* AlipaySDK.framework */, | ||||
| 			); | ||||
| 			name = Frameworks; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -68,9 +70,9 @@ | ||||
| /* End PBXGroup section */ | ||||
| 
 | ||||
| /* Begin PBXNativeTarget section */ | ||||
| 		58B511DA1A9E6C8500147676 /* Alipay */ = { | ||||
| 		58B511DA1A9E6C8500147676 /* RNAlipay */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "Alipay" */; | ||||
| 			buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNAlipay" */; | ||||
| 			buildPhases = ( | ||||
| 				58B511D71A9E6C8500147676 /* Sources */, | ||||
| 				58B511D81A9E6C8500147676 /* Frameworks */, | ||||
| @@ -80,9 +82,9 @@ | ||||
| 			); | ||||
| 			dependencies = ( | ||||
| 			); | ||||
| 			name = Alipay; | ||||
| 			name = RNAlipay; | ||||
| 			productName = RCTDataManager; | ||||
| 			productReference = 134814201AA4EA6300B7C361 /* libAlipay.a */; | ||||
| 			productReference = 134814201AA4EA6300B7C361 /* libRNAlipay.a */; | ||||
| 			productType = "com.apple.product-type.library.static"; | ||||
| 		}; | ||||
| /* End PBXNativeTarget section */ | ||||
| @@ -99,7 +101,7 @@ | ||||
| 					}; | ||||
| 				}; | ||||
| 			}; | ||||
| 			buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "Alipay" */; | ||||
| 			buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNAlipay" */; | ||||
| 			compatibilityVersion = "Xcode 3.2"; | ||||
| 			developmentRegion = en; | ||||
| 			hasScannedForEncodings = 0; | ||||
| @@ -112,7 +114,7 @@ | ||||
| 			projectDirPath = ""; | ||||
| 			projectRoot = ""; | ||||
| 			targets = ( | ||||
| 				58B511DA1A9E6C8500147676 /* Alipay */, | ||||
| 				58B511DA1A9E6C8500147676 /* RNAlipay */, | ||||
| 			); | ||||
| 		}; | ||||
| /* End PBXProject section */ | ||||
| @@ -184,6 +186,7 @@ | ||||
| 				MTL_ENABLE_DEBUG_INFO = YES; | ||||
| 				ONLY_ACTIVE_ARCH = YES; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				VALID_ARCHS = "armv7 armv7s"; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| @@ -236,12 +239,17 @@ | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				VALIDATE_PRODUCT = YES; | ||||
| 				VALID_ARCHS = "armv7 armv7s"; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		58B511F01A9E6C8500147676 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				FRAMEWORK_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"$(PROJECT_DIR)", | ||||
| 				); | ||||
| 				HEADER_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| @@ -250,14 +258,19 @@ | ||||
| 				); | ||||
| 				LIBRARY_SEARCH_PATHS = "$(inherited)"; | ||||
| 				OTHER_LDFLAGS = "-ObjC"; | ||||
| 				PRODUCT_NAME = Alipay; | ||||
| 				PRODUCT_NAME = RNAlipay; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				VALID_ARCHS = "armv7 armv7s"; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		58B511F11A9E6C8500147676 /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| 				FRAMEWORK_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"$(PROJECT_DIR)", | ||||
| 				); | ||||
| 				HEADER_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, | ||||
| @@ -266,15 +279,16 @@ | ||||
| 				); | ||||
| 				LIBRARY_SEARCH_PATHS = "$(inherited)"; | ||||
| 				OTHER_LDFLAGS = "-ObjC"; | ||||
| 				PRODUCT_NAME = Alipay; | ||||
| 				PRODUCT_NAME = RNAlipay; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				VALID_ARCHS = "armv7 armv7s"; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| /* End XCBuildConfiguration section */ | ||||
| 
 | ||||
| /* Begin XCConfigurationList section */ | ||||
| 		58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "Alipay" */ = { | ||||
| 		58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNAlipay" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				58B511ED1A9E6C8500147676 /* Debug */, | ||||
| @@ -283,7 +297,7 @@ | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "Alipay" */ = { | ||||
| 		58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNAlipay" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				58B511F01A9E6C8500147676 /* Debug */, | ||||
| @@ -2,6 +2,6 @@ | ||||
| <Workspace | ||||
|    version = "1.0"> | ||||
|    <FileRef | ||||
|       location = "group:Alipay.xcodeproj"> | ||||
|       location = "group:RNAlipay.xcodeproj"> | ||||
|    </FileRef> | ||||
| </Workspace> | ||||
| @@ -1,30 +0,0 @@ | ||||
| require "json" | ||||
|  | ||||
| package = JSON.parse(File.read(File.join(__dir__, "package.json"))) | ||||
|  | ||||
| Pod::Spec.new do |s| | ||||
|   s.name         = "react-native-alipay" | ||||
|   s.version      = package["version"] | ||||
|   s.summary      = package["description"] | ||||
|   s.description  = <<-DESC | ||||
|                     Alipay SDK for React Native | ||||
|                    DESC | ||||
|   s.homepage     = "https://github.com/uiwjs/react-native-alipay" | ||||
|   # brief license entry: | ||||
|   s.license      = "MIT" | ||||
|   # optional - use expanded license entry instead: | ||||
|   # s.license    = { :type => "MIT", :file => "LICENSE" } | ||||
|   s.authors      = { "Kenny Wong" => "wowohoo@qq.com" } | ||||
|   s.platforms    = { :ios => "9.0" } | ||||
|   s.source       = { :git => "https://github.com/uiwjs/react-native-alipay.git", :tag => "#{s.version}" } | ||||
|  | ||||
|   s.source_files = "ios/**/*.{h,c,m,swift}" | ||||
|   s.requires_arc = true | ||||
|  | ||||
|   s.dependency "React" | ||||
|   s.dependency "AlipaySDK-iOS" | ||||
|   s.library = "c++", "z" | ||||
|   # ... | ||||
|   # s.dependency "..." | ||||
| end | ||||
|  | ||||
							
								
								
									
										26
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,17 +1,21 @@ | ||||
| { | ||||
|   "name": "@uiwjs/react-native-alipay", | ||||
|   "version": "2.0.0", | ||||
|   "description": "基于 React Native 的宝支付插件,支持Android/iOS。", | ||||
|   "name": "@uiw/react-native-alipay", | ||||
|   "title": "React Native Alipay", | ||||
|   "version": "5.0.1", | ||||
|   "description": "基于 React Native 的支付宝插件,支持Android/iOS。", | ||||
|   "main": "index.js", | ||||
|   "typings": "index.d.ts", | ||||
|   "files": [ | ||||
|     "README.md", | ||||
|     "android", | ||||
|     "index.js", | ||||
|     "android/libs", | ||||
|     "android/src", | ||||
|     "android/build.gradle", | ||||
|     "ios", | ||||
|     "react-native-alipay.podspec" | ||||
|     "index.d.ts", | ||||
|     "index.js", | ||||
|     "README.md" | ||||
|   ], | ||||
|   "scripts": { | ||||
|     "test": "echo \"Error: no test specified\" && exit 1" | ||||
|     "build": "typedoc" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
| @@ -39,7 +43,9 @@ | ||||
|     "react-native": ">=0.60.0-rc.0 <1.0.x" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "react": "^16.9.0", | ||||
|     "react-native": "^0.61.5" | ||||
|     "react": "18.0.0", | ||||
|     "react-native": "0.69.3", | ||||
|     "typedoc": "0.20.36", | ||||
|     "typescript": "4.2.4" | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										15
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|   }, | ||||
|   "typedocOptions": { | ||||
|     "entryPoints": ["./index.d.ts"], | ||||
|     "out": "typedoc", | ||||
|     "name": "React Native Alipay", | ||||
|     "theme": "minimal", | ||||
|     "excludeExternals": true, | ||||
|     "excludePrivate": true, | ||||
|     "excludeProtected": true, | ||||
|     "toc": ["EntryClass", "ImportantInterface"], | ||||
|     "hideGenerator": true | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user