入门
故障排除
常见问题及解决方案
有用提示
删除 XCode DerivedData
XCode 在名为 DerivedData
的文件夹中缓存构建数据 - 有时它可能会因错误的构建而损坏,并且后续的构建可能会失败,直到清除缓存的工件。
在 本指南 中了解更多关于删除 DerivedData 的信息。
停止 ADB 服务器
adb 有时会卡在无响应状态。在这些情况下,您可以通过运行以下命令强制重启 adb 服务器:
adb kill-server
常见问题
Cocoapods 环境设置:Cocoapods 未安装或未正确配置
WARNING: CocoaPods is not installed or is not configured properly.
You will not be able to build your projects for iOS if they contain plugin with CocoaPod file.
To be able to build such projects, verify that you have installed CocoaPods (sudo gem install cocoapods).
Cocoapods 可以安装在系统目录或通过 homebrew 安装。取决于您的系统可能已经设置了它们,这会导致 Cocoapods 检测方式的常见问题。
您可以尝试安全地运行以下命令:
pod cache clean -all
pod deintegrate
rm -rf "${HOME}/Library/Caches/CocoaPods"
brew install cocoapods
然后,您可以通过运行以下命令确认您的 Cocoapods 已正确安装并具有您预期的版本:
pod --version
然后,您可以尝试再次运行 ns doctor
。
XCode 14:xcodebuild 退出代码为 65
error: Signing for "XXX-YYY" requires a development team.
Select a development team in the Signing & Capabilities editor. (in target 'XXX-YYY' from project 'Pods')
<...>
note: Run script build phase 'NativeScript PreBuild' will be run during every build because the option to
run the script phase "Based on dependency analysis" is unchecked. (in target 'XXX' from project 'XXX')
<...>
** BUILD FAILED **
Unable to apply changes on device: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXX.
Error is: Command xcodebuild failed with exit code 65.
🟠 可能的解决方案
最可能的问题是某些 Pod 缺少 DEVELOPMENT_TEAM
。解决方法是在 App_Resources/iOS/Podfile
中添加以下内容(如果您的项目还没有,请创建一个):
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
# either set the DEVELOPMENT_TEAM explicitly
config.build_settings['DEVELOPMENT_TEAM'] = '<TEAM_ID>'
# or disable code signing
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
end
end
end
将 <TEAM_ID>
替换为您实际的团队 ID。
CocoaPods 找不到 pod 的兼容版本
CocoaPods could not find compatible versions for pod "SDWebImage":
In Podfile:
SDWebImage (~> 5.13.2)
🟢 常见解决方案
CocoaPods 类似于 npm 包,但用于 iOS 库(如果需要,它们有自己的 npm 注册表)。您的本地 Cocoapods 缓存(通常位于 ~/.cocoapods
)保留一个 Spec 列表引用,该引用可能会过时,需要使用以下命令手动更新:
pod repo update
如果这不能解决问题,您通常可以 删除 XCode DerivedData。
CocoaPods 找不到 pod 的兼容版本 - 更高的最低部署目标
[!] CocoaPods could not find compatible versions for pod "FBSDKCoreKit":
In Podfile:
FBSDKCoreKit (~> 13.1.0)
Specs satisfying the `FBSDKCoreKit (~> 13.1.0)` dependency were found, but they required a higher minimum deployment target.
🟢 常见解决方案
在您的 App_Resources/iOS/build.xcconfig
中增加 IPHONEOS_DEPLOYMENT_TARGET
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
以上将增加应用程序的部署目标,但是您可能还需要增加 CocoaPods 的部署目标。将以下内容添加到您的 App_Resources/iOS/Podfile
中(如果您没有,请创建一个):
platform :ios, '13.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
在这个例子中,我们将其设置为 13.0
- 将其更改为适合您的项目的一个版本。有些库需要更高的目标,所以在大多数情况下,找到最高需要的目标,并将其用作您的部署目标。确保 build.xcconfig
和 Podfile
版本匹配。
如果这不能解决问题,您通常可以 删除 XCode DerivedData。
dyld:找不到符号
dyld: Symbol not found: __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE
Referenced from: /path/to/app/platforms/ios/internal/metadata-generator-x86_64/bin/./objc-metadata-generator (which was built for Mac OS X 12.0)
Expected in: /usr/lib/libc++.1.dylib
🟠 可能的解决方案
当库使用当前部署目标中不可用的符号时,就会发生这种情况。
在您的 App_Resources/iOS/build.xcconfig
中增加 IPHONEOS_DEPLOYMENT_TARGET
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
以上将增加应用程序的部署目标,但是您可能还需要增加 CocoaPods 的部署目标。将以下内容添加到您的 App_Resources/iOS/Podfile
中(如果您没有,请创建一个):
platform :ios, '13.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
在这个例子中,我们将其设置为 13.0
- 将其更改为适合您的项目的一个版本。有些库需要更高的目标,所以在大多数情况下,找到最高需要的目标,并将其用作您的部署目标。确保 build.xcconfig
和 Podfile
版本匹配。
如果这不能解决问题,您通常可以 删除 XCode DerivedData。
无法在设备上应用更改
Installing on device XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXX...
Unable to apply changes on device: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXX.
Error is: Failed to install /path/to/appname/platforms/ios/build/Debug-iphoneos/appname.ipa
on device with identifier XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXX. Error is: Could not install application.
🟠 可能的解决方案
在 XCode 中打开项目 (platforms/ios/<appname>.xcworkspace
),然后在左侧文件树中选择项目名称。您应该在中间看到 General、Signing & Capabilities 和其他选项卡。在顶部的工具栏中选择您的设备作为运行目标,然后选择 Signing & Capabilities,选择一个合适的团队,如果需要,请按 Profiles 列表中的 Register Device 按钮。
设备注册后,您可以退出 XCode,从 NativeScript CLI 运行应用程序应该可以正常工作。
EMFILE:打开的文件过多 'FILE_PATH'
Webpack compilation complete. Watching for file changes.
Watchpack Error (watcher): Error: EMFILE: too many open files 'FILE_PATH'
Watchpack Error (watcher): Error: EMFILE: too many open files 'FILE_PATH'
Watchpack Error (watcher): Error: EMFILE: too many open files 'FILE_PATH' <-- This repeats many times
🟠 可能的解决方案
将以下行添加到您的 shell 配置文件,通常是 ~/.zshrc
,或者如果您使用的是 bash
,则添加 ~/.bash_profile
或 ~/.bashrc
配置文件
export NODE_OPTIONS="--max-old-space-size=4096"
重新加载您的 shell(例如,source ~/.zshrc
)或打开一个新的终端窗口,然后尝试再次运行。
注意:您可以进一步增加此数字,但请记住,最大值取决于可用的系统内存。
错误 TS2611:'xxx' 在类 'Y' 中被定义为属性,但在此处在 'Z' 中被重写为访问器
ERROR: node_modules/@nativescript/core/ui/proxy-view-container/index.d.ts:10:9
error TS2611: 'ios' is defined as a property in class 'LayoutBase',
but is overridden here in 'ProxyViewContainer' as an accessor.
10 get ios(): any;
~~~
node_modules/@nativescript/core/ui/proxy-view-container/index.d.ts:11:9
error TS2611: 'android' is defined as a property in class 'LayoutBase',
but is overridden here in 'ProxyViewContainer' as an accessor.
11 get android(): any;
🟢 常见解决方案
可以通过将以下内容添加到您的 tsconfig.json
来忽略以上问题:
"skipDefaultLibCheck": true,
"skipLibCheck": true,