RNAppAuth, сборка iOS завершилась неудачно, неизвестное имя типа "пространство имен", response-native-app-auth
Я пытаюсь добавить 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 Version 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"
}
}
ОБНОВЛЕНИЕ: я только что установил новое приложение Expo, следуя этому руководству, и у меня точно такая же ошибка.
1 ответ
Проблема в том, что в путях поиска заголовка есть импорт, который ищет в целом /ios
папка:$(SRCROOT)/../../../ios/**
Если вам случится использовать Expo и CocoaPods, там будет boost-for-react-native
как зависимость внутри вашей папки Pods. Фактически, любой пакет, зависящий от наддува, вызовет эту проблему. XCode также пытается создать boost, но у него есть не-ObjC файлы, поэтому он потерпит неудачу.
Чтобы решить проблему:
Откройте RNAppAuth.xcodeproj, переключитесь на вкладку "Настройки сборки" и найдите пути поиска заголовка. Заменить линию $(SRCROOT)/../../../ios/**
с
"$(SRCROOT)/../../../ios/YOUR_PROJECT_NAME",
"$(SRCROOT)/../../../ios/Pods/AppAuth/**",
Обратите внимание, что эти изменения исчезнут после использования npm install (или yarn). Чтобы сделать эти изменения постоянными, вы можете использовать patch-package.
Редактировать: эта проблема была исправлена, теперь должна работать последняя версия пакета.