kvb*_*vba 6 ios react-native expo react-native-native-module expo-module
我正在尝试使用 expo-modules 为官方 Spotify SDK 构建一个反应本机包装模块。我已.podspec使用s.vendored_frameworks. 示例应用程序的项目预构建工作正常,但框架的头文件不会被复制,并且在为模拟器构建应用程序时,我收到此错误:
\xe2\x9d\x8c (/Users/<username>/Library/Developer/Xcode/DerivedData/expospotifyexample-ayfjxgjzbhoakacqvfpiaawhvpwz/Build/Products/Debug-iphonesimulator/ExpoSpotify/ExpoSpotify-umbrella.h:13:9)\n\n 11 | #endif\n 12 | \n> 13 | #import "SpotifyAppRemote.h"\n | ^ 'SpotifyAppRemote.h' file not found\n 14 | #import "SpotifyiOS.h"\n 15 | #import "SPTAppRemote.h"\n 16 | #import "SPTAppRemoteAlbum.h"\nRun Code Online (Sandbox Code Playgroud)\n如果我手动将SDK的头文件复制到错误所在的路径,它就可以正常工作。
\n我的文件夹结构(只是重要的部分):
\n\xe2\x94\x9c\xe2\x94\x80 example/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ios/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Pods/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Headers/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Public/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ExpoSpotify/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ExpoSpotify.modulemap\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ExpoSpotify-umbrella.h\n\xe2\x94\x9c\xe2\x94\x80 ios/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 SpotifyiOS.xcframework/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ios-arm64_armv7/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 SpotifyiOS.framework/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Headers/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 SpotifyAppRemote.h\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Modules/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module.modulemap\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ios-arm64_i386_x86_64-simulator/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 SpotifyiOS.framework/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Headers/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 SpotifyAppRemote.h\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Modules/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 module.modulemap\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 Info.plist\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ExpoSpotify.podspec\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ExpoSpotifyModule.swift\nRun Code Online (Sandbox Code Playgroud)\n我的 .podspec 文件:
\nrequire 'json'\n\npackage = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))\n\nPod::Spec.new do |s|\n s.name = 'ExpoSpotify'\n s.version = package['version']\n s.summary = package['description']\n s.description = package['description']\n s.license = package['license']\n s.author = package['author']\n s.homepage = package['homepage']\n s.platform = :ios, '13.0'\n s.swift_version = '5.4'\n s.source = { git: 'https://github.com/' }\n s.static_framework = true\n\n s.dependency 'ExpoModulesCore'\n\n # Swift/Objective-C compatibility\n s.pod_target_xcconfig = {\n 'DEFINES_MODULE' => 'YES',\n 'SWIFT_COMPILATION_MODE' => 'wholemodule',\n }\n\n s.preserve_paths = "ExpoSpotify/SpotifyiOS.xcframework/**/*"\n s.vendored_frameworks = 'ExpoSpotify/SpotifyiOS.xcframework'\n s.source_files = "**/*.{h,m,swift}", 'ExpoSpotify/SpotifyiOS.xcframework/**/Headers/*.{h,m}'\nend\nRun Code Online (Sandbox Code Playgroud)\n我注意到一件事。在示例应用程序example/ios/Pods/Headers/Public/ExpoSpotify-umbrella.h文件中,导入量加倍且平坦:
#import "SpotifyAppRemote.h"\n... other headers\n#import "SpotifyAppRemote.h"\n... other headers\nRun Code Online (Sandbox Code Playgroud)\n但是当我将框架模块映射的路径添加到 .podspec 时:
\ns.header_mappings_dir = 'ExpoSpotify/ios/SpotifyiOS.xcframework/**/Modules'
那么导入是相对的(但路径错误)
\n#import "../../../../../SpotifyiOS.xcframework/ios-arm64_armv7/SpotifyiOS.framework/Headers/SpotifyAppRemote.h"\n#import "../../../../../SpotifyiOS.xcframework/ios-arm64_i386_x86_64-simulator/SpotifyiOS.framework/Headers/SpotifyAppRemote.h"\nRun Code Online (Sandbox Code Playgroud)\n如果它放弃了路径中的 ExpoSpotify
\ns.preserve_paths = "SpotifyiOS.xcframework/**/*"\n s.vendored_frameworks = 'SpotifyiOS.xcframework'\n s.source_files = "**/*.{h,m,swift}", 'SpotifyiOS.xcframework/**/Headers/*.{h,m}'\n s.header_mappings_dir = 'SpotifyiOS.xcframework/**/Modules'\nRun Code Online (Sandbox Code Playgroud)\n导入路径更短(仍然错误):
\n#import "../../ios-arm64_armv7/SpotifyiOS.framework/Headers/SpotifyAppRemote.h"\n#import "../../ios-arm64_i386_x86_64-simulator/SpotifyiOS.framework/Headers/SpotifyAppRemote.h"\nRun Code Online (Sandbox Code Playgroud)\n我使用的是配备 M2 处理器的 MacBook、macOS Ventura (13.3.1)、最新的 Xcode、Cocoapods 1.12.0。
\n| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |