RNAppAuth,iOS 构建失败,未知类型名称“命名空间”,react-native-app-auth
Posted
技术标签:
【中文标题】RNAppAuth,iOS 构建失败,未知类型名称“命名空间”,react-native-app-auth【英文标题】:RNAppAuth, iOS build failed, Unknown type name 'namespace', react-native-app-auth 【发布时间】:2018-04-24 12:44:18 【问题描述】:我正在尝试将react-native-app-auth
添加到现有的但相当新鲜的 Expo 项目中。
我正在按照您的设置指南进行操作,因此请执行以下步骤:
yarn add react-native-app-auth@2.2.0 --dev
添加pod 'AppAuth', '>= 0.91'
cd iso && pod install
react-native link
(编辑:来自项目的根路径)
我得到:
rnpm-install info Linking react-native-app-auth ios dependency
rnpm-install WARN ERRGROUP Group 'Libraries' does not exist in your Xcode project. We have created it automatically for you.
rnpm-install info Platform 'ios' module react-native-app-auth has been successfully linked
看起来不错。
然后,当我在 XCode 中构建时,我收到以下错误:
在网上搜索后,我发现它可能与编译器有关,我将其更改为使用 Objective-C++:
现在我得到更多错误:
我也试过了:
将目标版本更改为9.0
再做一次
祈祷????
没有什么帮助 :(Xcode 9.3 版 (9E145)
app.js
"expo":
"sdkVersion": "26.0.0",
"ios":
"bundleIdentifier": "com.xxx.xxx",
"publishBundlePath": "ios/mobile-xxx/Supporting/shell-app.bundle",
"publishManifestPath": "ios/mobile-xxx/Supporting/shell-app-manifest.json"
,
"android":
"package": "com.xxx.xxx"
,
"name": "mobile-xxx",
"slug": "mobile-xxx",
"version": "0.1.0",
"isDetached": true,
"entryPoint": "./index.js",
"detach":
"scheme": "exp997ce9c6b4fd43cfa14f4eede063ecf5",
"iosExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/ios-v2.4.4-sdk26.0.0-3bd935c7-cdd3-4002-8e44-4df857a675f2.tar.gz",
"androidExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/android-v2.4.0-sdk26.0.0-e63d9209-070c-4118-b06b-c60e82da0b66.tar.gz"
package.js
"name": "mobile-xxx",
"version": "0.1.0",
"private": true,
"devDependencies":
"jest-expo": "26.0.0",
"react-native-app-auth": "2.2.0",
"react-test-renderer": "16.3.0-alpha.1"
,
"main": "node_modules/expo/AppEntry.js",
"scripts":
"test": "jest"
,
"jest":
"preset": "jest-expo"
,
"dependencies":
"expo": "^26.0.0",
"prop-types": "^15.6.1",
"react": "16.3.0-alpha.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-26.0.0.tar.gz",
"react-native-app-auth": "^2.2.0",
"react-native-router-flux": "^4.0.0-beta.28",
"react-redux": "^5.0.7",
"redux": "^3.7.2"
更新:我刚刚按照this 指南设置了一个新的 Expo 应用程序,并且出现了完全相同的错误。 ???
【问题讨论】:
您是否从项目根目录运行链接?不清楚您是否按照列出的步骤进行操作。 是的,我做到了。抱歉不清楚@MichaelChengspan> 从错误日志中我相信这与boost-for-react-native
有关。
【参考方案1】:
问题是标题搜索路径中有一个导入,它在整个 /ios
文件夹中搜索:
$(SRCROOT)/../../../ios/**
如果您碰巧使用 Expo 和 CocoaPods,那么在您的 Pods 文件夹中将有 boost-for-react-native
作为依赖项。事实上,任何依赖于 boost 的包都会导致这个问题。 XCode 也尝试构建 boost,但是它有一些非 ObjC 文件,所以它会失败。
为了解决问题:
打开 RNAppAuth.xcodeproj,切换到 Build Settings 选项卡并搜索 header 搜索路径。将行 $(SRCROOT)/../../../ios/**
替换为
"$(SRCROOT)/../../../ios/YOUR_PROJECT_NAME",
"$(SRCROOT)/../../../ios/Pods/AppAuth/**",
请注意,这些更改将在使用 npm install(或 yarn)后消失。要使这些更改永久生效,您可以使用patch-package。
编辑:这个问题已经修复,使用最新版本的包现在应该可以工作了。
【讨论】:
此解决方案不适用于 boost-for-react-native 库。 谢谢,这帮助我调试了我的问题。以上是关于RNAppAuth,iOS 构建失败,未知类型名称“命名空间”,react-native-app-auth的主要内容,如果未能解决你的问题,请参考以下文章
Flutter ios 构建失败 - Distill 因未知原因而失败
XCode:未知类型名称“SCREEN”,仅在构建发布时,在文件“unctrl.h”中
“未知类型名称'decltype'”:在mac上安装pyicu失败,gcc错误
pip3.6 install mysqlclient==1.3.12 失败并出现错误:未知类型名称“my_bool”;你的意思是“布尔”