如何在 ios 中为 nativescript 应用程序调试构建失败?

Posted

技术标签:

【中文标题】如何在 ios 中为 nativescript 应用程序调试构建失败?【英文标题】:How to debug build faild in ios for nativescript apps? 【发布时间】:2020-05-19 13:43:51 【问题描述】:

我刚刚运行tns run ios --emulator,我得到了这个:

/Users/me/Desktop/proj/projfront/App/platforms/ios/Pods/MBProgressHUD/MBProgressHUD.m:87:34: error: no known class method for selector
      'labelColor'
       _contentColor = [[UIColor labelColor] colorWithAlphaComponent:0.7f];
                                 ^~~~
/Users/me/Desktop/proj/projfront/App/platforms/ios/Pods/MBProgressHUD/MBProgressHUD.m:378:101: error: use of undeclared identifier
      'UIActivityIndicatorViewStyleLarge'
                activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleLarge];
                                                                                                    ^
/Users/me/Desktop/proj/projfront/App/platforms/ios/Pods/MBProgressHUD/MBProgressHUD.m:1065:32: error: use of undeclared identifier
      'UIBlurEffectStyleSystemThickMaterial'
            _blurEffectStyle = UIBlurEffectStyleSystemThickMaterial;
                               ^
3 errors generated.
note: Using new build systemnote: Planning buildnote: Constructing build description
* BUILD FAILED *

Unable to apply changes on device: 96EBA70E-38D5-4C6A-B30B-21BECF697C9C. Error is: Command xcodebuild failed with exit code 65.

我不知道如何调试它。它在 android 上构建得很好。 这是我的 package.json:


  "nativescript": 
    "templateVersion": "v2",
    "tns-android": 
      "version": "6.0.0"
    ,
    "tns-ios": 
      "version": "6.0.1"
    
  ,
  "dependencies": 
    "@nativescript/theme": "^2.2.1",
    "@nstudio/nativescript-cardview": "^1.0.0",
    "@nstudio/nativescript-checkbox": "^1.0.0",
    "@nstudio/nativescript-floatingactionbutton": "^2.0.0",
    "@nstudio/nativescript-loading-indicator": "^3.0.1",
    "axios": "^0.19.2",
    "nativescript-exoplayer": "^4.0.2",
    "nativescript-iqkeyboardmanager": "^1.5.1",
    "nativescript-masked-text-field": "^4.0.3",
    "nativescript-plugin-firebase": "^10.3.3",
    "nativescript-social-share": "^1.6.0",
    "nativescript-ui-autocomplete": "^6.0.0",
    "nativescript-vue": "^2.4.0",
    "tns-core-modules": "^6.0.0",
    "vuex": "^3.1.1"
  ,
  "devDependencies": 
    "@babel/core": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "babel-loader": "^8.0.2",
    "nativescript-dev-webpack": "^1.0.0",
    "nativescript-vue-template-compiler": "^2.0.0",
    "nativescript-worker-loader": "~0.9.0",
    "node-sass": "^4.9.2",
    "vue-loader": "^15.4.0"
  

【问题讨论】:

胡思乱想——像 UIBlurEffectStyleSystemThickMaterial 这样的东西只能在最新的 iOS 上使用,如果你的目标低于这个值就会失败? 您能否确认您的 N 运行时版本和您正在使用的插件名称? ✔ 组件 nativescript 有 6.3.3 版本并且是最新的。 ✔ 组件 tns-core-modules 有 6.3.2 版本并且是最新的。 【参考方案1】:

labelColor 是 iOS 13 引入的新属性。您需要 XCode 11 才能为 iOS 13.x 及更高版本构建。也就是说,其中一个插件正在引入一个名为 MBProgressHUD 的 pod。该 pod 正在使用最新的 iOS API。但是您的构建很可能会失败,因为它是使用 XCode 10.x 或更低版本构建的。要解决此问题,请尝试使用 XCode 11 和最新的 tns-ios(6.3.x 及更高版本)+最新的 tns-core-modules 构建。

【讨论】:

所以如果我坚持使用这个插件,IOS 版本低于 13 的人将无法使用我的应用程序? 我怎么知道哪个插件正在使用它? 只需搜索 MBProgressHUD - @nstudio/nativescript-loading-indicator 能否请您也回答我的第一条评论? 我有同样的问题,但我正在使用 Sidekick 云构建并且我有 xcode 11。我该怎么办?

以上是关于如何在 ios 中为 nativescript 应用程序调试构建失败?的主要内容,如果未能解决你的问题,请参考以下文章

如何在nativescript中为stacklayout提供边框和边框半径

如何在 iOS 中为表格视图和滚动视图设置偏移量,以便两者一起滚动

NativeScript - ios如何在键盘出现时调整视图

如何在nativescript angular中隐藏ios的水平滚动指示器

如何在 Nativescript 中实现 XMPP 通信?

Nativescript - 设置 Nativescript 插件的目标 IOS 版本