Nativescript - 为 Nativescript 插件设置目标 IOS 版本
Nativescript - Set the target IOS version for Nativescript plugins
我最近将我的 xcode 更新为 Xcode12 测试版,这样我就可以看到我的应用程序 运行 在即将发布的 IOS 14
尝试 运行 TNS 运行 IOS 时出现以下错误:
Saving metadata generation's stderr stream to: /Users/USER/Desktop/Projects/APP/platforms/ios/build/Debug-iphonesimulator/metadata-generation-stderr-x86_64.txt
~/Desktop/Projects/APP/platforms/ios
ld: building for iOS Simulator, but linking in dylib built for iOS, file '/Users/USER/Desktop/Projects/APP/platforms/ios/internal//NativeScript.framework/NativeScript' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build system
note: Building targets in parallel
note: Using codesigning identity override:
note: Planning build
note: Using build description from disk
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'MDFInternationalization' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'IQKeyboardManager' from project 'Pods')
这是我的 Podfile
use_frameworks!
target "ClientApp" do
# NativeScriptPlatformSection /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile with 9.0
platform :ios, '9.0'
# End NativeScriptPlatformSection
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile
# platform :ios, '9.0'
use_frameworks!
pod 'MaterialComponents/Tabs', '~> 84.4'
# End Podfile
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/nativescript-iqkeyboardmanager/platforms/ios/Podfile
pod 'IQKeyboardManager', '~> 6.2.0'
# platform :ios, '9.0'
# End Podfile
end
我也试过了,也有同样的错误
use_frameworks!
target "ClientApp" do
# NativeScriptPlatformSection /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile with 9.0
platform :ios, '9.0'
# End NativeScriptPlatformSection
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile
# platform :ios, '9.0'
use_frameworks!
pod 'MaterialComponents/Tabs', '~> 84.4'
# End Podfile
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/nativescript-iqkeyboardmanager/platforms/ios/Podfile
pod 'IQKeyboardManager', '~> 6.2.0'
# platform :ios, '9.0'
# End Podfile
end
post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
而且我已经尝试取消对 Podfile 中注释的注释。
这也是我的 package.json
{
"nativescript": {
"id": {
"ios": "{{ID}}",
"android": "{{ID}}",
},
"tns-android": {
"version": "6.1.1"
},
"tns-ios": {
"version": "6.5.2"
}
},
"description": "NativeScript Application",
"license": "SEE LICENSE IN <your-license-filename>",
"repository": "<fill-your-repository-here>",
"scripts": {
"lint": "tslint \"src/**/*.ts\""
},
"dependencies": {
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@types/node": "^12.12.11",
"jwt-decode": "^2.2.0",
"nativescript-angular": "~8.2.0",
"nativescript-cardview": "^3.2.0",
"nativescript-drop-down": "^5.0.4",
"nativescript-filterable-listpicker": "^2.2.6",
"nativescript-iqkeyboardmanager": "^1.5.1",
"nativescript-materialdropdownlist": "^1.0.15",
"nativescript-phone": "^1.4.1",
"nativescript-theme-core": "~1.0.6",
"nativescript-ui-autocomplete": "^5.1.1",
"nativescript-ui-sidedrawer": "~7.0.0",
"reflect-metadata": "~0.1.12",
"rxjs": "^6.4.0",
"tns-core-modules": "~6.1.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular/cli": "^8.3.5",
"@angular/compiler-cli": "~8.2.0",
"@nativescript/schematics": "^0.7.1",
"@ngtools/webpack": "~8.2.0",
"@types/jasmine": "^3.4.0",
"codelyzer": "~4.5.0",
"nativescript-dev-webpack": "^1.4.0",
"node-sass": "^4.7.1",
"tslint": "~5.19.0",
"typescript": "~3.5.3"
}
}
我也收到了与 firebase 插件相同的错误,但我删除了它。
理想情况下,我应该能够让所有依赖项都针对相同的 IOS 版本,然后如果有问题我会从那里解决。有什么想法吗?
我通过在 App_Resources/iOS 文件夹中添加一个 Podfile 来解决这个问题,文件中包含以下代码。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
这通过 pods 循环删除他们的部署目标,允许他们继承设置。必须确保删除平台文件夹并重建以使更改生效。
添加的Podfile将在平台中与生成的Podfile合并。
我最近将我的 xcode 更新为 Xcode12 测试版,这样我就可以看到我的应用程序 运行 在即将发布的 IOS 14
尝试 运行 TNS 运行 IOS 时出现以下错误:
Saving metadata generation's stderr stream to: /Users/USER/Desktop/Projects/APP/platforms/ios/build/Debug-iphonesimulator/metadata-generation-stderr-x86_64.txt
~/Desktop/Projects/APP/platforms/ios
ld: building for iOS Simulator, but linking in dylib built for iOS, file '/Users/USER/Desktop/Projects/APP/platforms/ios/internal//NativeScript.framework/NativeScript' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build system
note: Building targets in parallel
note: Using codesigning identity override:
note: Planning build
note: Using build description from disk
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'MDFInternationalization' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'IQKeyboardManager' from project 'Pods')
这是我的 Podfile
use_frameworks!
target "ClientApp" do
# NativeScriptPlatformSection /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile with 9.0
platform :ios, '9.0'
# End NativeScriptPlatformSection
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile
# platform :ios, '9.0'
use_frameworks!
pod 'MaterialComponents/Tabs', '~> 84.4'
# End Podfile
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/nativescript-iqkeyboardmanager/platforms/ios/Podfile
pod 'IQKeyboardManager', '~> 6.2.0'
# platform :ios, '9.0'
# End Podfile
end
我也试过了,也有同样的错误
use_frameworks!
target "ClientApp" do
# NativeScriptPlatformSection /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile with 9.0
platform :ios, '9.0'
# End NativeScriptPlatformSection
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/tns-core-modules/platforms/ios/Podfile
# platform :ios, '9.0'
use_frameworks!
pod 'MaterialComponents/Tabs', '~> 84.4'
# End Podfile
# Begin Podfile - /Users/USER/Desktop/Projects/APP/node_modules/nativescript-iqkeyboardmanager/platforms/ios/Podfile
pod 'IQKeyboardManager', '~> 6.2.0'
# platform :ios, '9.0'
# End Podfile
end
post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
而且我已经尝试取消对 Podfile 中注释的注释。
这也是我的 package.json
{
"nativescript": {
"id": {
"ios": "{{ID}}",
"android": "{{ID}}",
},
"tns-android": {
"version": "6.1.1"
},
"tns-ios": {
"version": "6.5.2"
}
},
"description": "NativeScript Application",
"license": "SEE LICENSE IN <your-license-filename>",
"repository": "<fill-your-repository-here>",
"scripts": {
"lint": "tslint \"src/**/*.ts\""
},
"dependencies": {
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@types/node": "^12.12.11",
"jwt-decode": "^2.2.0",
"nativescript-angular": "~8.2.0",
"nativescript-cardview": "^3.2.0",
"nativescript-drop-down": "^5.0.4",
"nativescript-filterable-listpicker": "^2.2.6",
"nativescript-iqkeyboardmanager": "^1.5.1",
"nativescript-materialdropdownlist": "^1.0.15",
"nativescript-phone": "^1.4.1",
"nativescript-theme-core": "~1.0.6",
"nativescript-ui-autocomplete": "^5.1.1",
"nativescript-ui-sidedrawer": "~7.0.0",
"reflect-metadata": "~0.1.12",
"rxjs": "^6.4.0",
"tns-core-modules": "~6.1.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular/cli": "^8.3.5",
"@angular/compiler-cli": "~8.2.0",
"@nativescript/schematics": "^0.7.1",
"@ngtools/webpack": "~8.2.0",
"@types/jasmine": "^3.4.0",
"codelyzer": "~4.5.0",
"nativescript-dev-webpack": "^1.4.0",
"node-sass": "^4.7.1",
"tslint": "~5.19.0",
"typescript": "~3.5.3"
}
}
我也收到了与 firebase 插件相同的错误,但我删除了它。
理想情况下,我应该能够让所有依赖项都针对相同的 IOS 版本,然后如果有问题我会从那里解决。有什么想法吗?
我通过在 App_Resources/iOS 文件夹中添加一个 Podfile 来解决这个问题,文件中包含以下代码。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
这通过 pods 循环删除他们的部署目标,允许他们继承设置。必须确保删除平台文件夹并重建以使更改生效。
添加的Podfile将在平台中与生成的Podfile合并。