Ionic 3/Cordova:应用程序通过 Ionic CLI 而不是通过 Xcode 运行(在 Xcode 中构建成功)

Posted

技术标签:

【中文标题】Ionic 3/Cordova:应用程序通过 Ionic CLI 而不是通过 Xcode 运行(在 Xcode 中构建成功)【英文标题】:Ionic 3/Cordova: app runs via Ionic CLI but not through Xcode (build in Xcode succeeds) 【发布时间】:2017-08-11 15:06:39 【问题描述】:

我正在开发一个 Ionic 3 项目,该项目目前在连接的 ios 设备上运行良好(使用 ionic cordova run ios --device 命令),并使用 Ionic CLI 和 Xcode 构建。

但是,当我尝试通过 Xcode 在我的设备上运行时,它会挂在启动屏幕上,并且我在 Xcode 控制台中看到以下错误。这种行为也发生在我目前在 TestFlight 上的 beta 版本中——所以我不认为它仅限于我的环境。

2017-08-11 10:42:15.996743-0400 MyApp[11551:3839240] libMobileGestalt MobileGestaltSupport.m:153: pid 11551 (MyApp) does not have sandbox access for <deviceID?> and IS NOT appropriately entitled
2017-08-11 10:42:15.996819-0400 MyApp[11551:3839240] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)

此错误在 Google 和 *** 上显示了很多结果,但我一直无法找到解决方案。有一个 recent SO question 的答案专门与 Ionic 相关,但那里的步骤(运行 npm install)没有帮助

这似乎与项目中的插件以及它们的权限有关,但是我想明确一点,我已经在 Apple Developer 网站上正确设置了 App ID,为 Dev 和 Distribution 启用了推送服务,并关联了Dev Provisioning Profile 和 Distribution Provisioning Profile 的 App ID。

我有这个与 Xcode 相关联的开发者帐户,并且正在使用具有应用 ID 和我刚才描述的其他设置的帐户对构建进行签名。在我的开发设备上运行时,推送通知(以及其他所有内容)对我来说都很好。

我的预感是这与我结合使用的 Push 插件和构建/项目选项有关,但我的项目配置中确实有 APS 权利,以及在项目。

错误消息本身引用了 OpenRadar issue,但该页面上没有任何帮助。正如一位用户提到的那样,我查看了我的Info.plist 文件,但我找不到任何可能与此问题相关的设置。有一个包含允许域的 App Transport Security Settings 字典,但是我不知道这是怎么回事,因为我什至无法在允许域中的开发设备上运行。

我正在使用 Xcode 8.3.3 并尝试在 iOS 10.3 上构建设备。我的 Ionic 信息和package.json

cli packages: (/Users/david/Source/sideline-app/node_modules)

@ionic/cli-plugin-cordova       : 1.6.2
@ionic/cli-plugin-ionic-angular : 1.4.1
@ionic/cli-utils                : 1.7.0
ionic (Ionic CLI)               : 3.7.0

global packages:

Cordova CLI : 7.0.1 

local packages:

@ionic/app-scripts : 2.1.3
Cordova Platforms  : ios 4.4.0
Ionic Framework    : ionic-angular 3.6.0

System:

android SDK Tools : 25.2.5
Node              : v7.4.0
OS                : macOS Sierra
Xcode             : Xcode 8.3.3 Build version 8E3004b 
ios-deploy        : 1.9.1 
ios-sim           : 6.0.0 
npm               : 4.0.5 

package.json


    "name": "MyApp",
    "version": "0.0.1",
    "author": "AppAuthor",
    "homepage": "http://ionicframework.com/",
    "private": true,
    "scripts": 
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "lint": "ionic-app-scripts lint",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
    ,
    "dependencies": 
        "@angular/common": "4.1.3",
        "@angular/compiler": "4.1.3",
        "@angular/compiler-cli": "4.1.3",
        "@angular/core": "4.1.3",
        "@angular/forms": "4.1.0",
        "@angular/http": "4.1.0",
        "@angular/platform-browser": "4.1.0",
        "@angular/platform-browser-dynamic": "4.1.0",
        "@angular/tsc-wrapped": "^4.3.4",
        "@ionic-native/contacts": "^4.1.0",
        "@ionic-native/core": "3.7.0",
        "@ionic-native/facebook": "^4.1.0",
        "@ionic-native/keyboard": "^4.1.0",
        "@ionic-native/mixpanel": "^4.1.0",
        "@ionic-native/push": "^4.1.0",
        "@ionic-native/social-sharing": "^4.1.0",
        "@ionic-native/splash-screen": "3.7.0",
        "@ionic-native/status-bar": "3.7.0",
        "@ionic/app-scripts": "^2.1.3",
        "@ionic/storage": "^2.0.1",
        "ajv": "^5.2.2",
        "autoprefixer": "^7.1.2",
        "chat-plugin": "file:onymos-plugin-chat",
        "cordova-ios": "^4.4.0",
        "cordova-plugin-compat": "^1.1.0",
        "cordova-plugin-console": "^1.0.5",
        "cordova-plugin-contacts": "^2.3.1",
        "cordova-plugin-device": "^1.1.4",
        "cordova-plugin-facebook4": "^1.9.1",
        "cordova-plugin-mixpanel": "^3.1.0",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-statusbar": "^2.2.2",
        "cordova-plugin-whitelist": "^1.3.1",
        "cordova-plugin-x-socialsharing": "^5.1.8",
        "cordova-sqlite-storage": "^2.0.4",
        "es6-promise-plugin": "^4.1.0",
        "ionic-angular": "^3.6.0",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionic2-auto-complete": "^1.5.2-beta",
        "ionicons": "3.0.0",
        "ng2-validation": "^4.2.0",
        "onymos-plugin-chat": "file:onymos-plugin-chat",
        "phonegap-plugin-push": "^2.0.0",
        "rxjs": "^5.4.0",
        "sw-toolbox": "3.6.0",
        "zone.js": "^0.8.12"
    ,
    "devDependencies": 
        "@angular/cli": "^1.2.7",
        "@ionic/app-scripts": "1.3.7",
        "@ionic/cli-plugin-cordova": "1.6.2",
        "@ionic/cli-plugin-ionic-angular": "1.4.1",
        "ionic": "3.7.0",
        "typescript": "2.2.1"
    ,
    "description": "An Ionic project",
    "cordova": 
        "plugins": 
            "cordova-plugin-console": ,
            "cordova-plugin-device": ,
            "cordova-plugin-splashscreen": ,
            "cordova-plugin-statusbar": ,
            "cordova-plugin-whitelist": ,
            "ionic-plugin-keyboard": ,
            "cordova-sqlite-storage": ,
            "cordova-plugin-x-socialsharing": ,
            "cordova-plugin-contacts": 
                "CONTACTS_USAGE_DESCRIPTION": " "
            ,
            "cordova-plugin-facebook4": 
                "APP_ID": <FB app ID>,
                "APP_NAME": "MyApp"
            ,
            "cordova-plugin-mixpanel": ,
            "phonegap-plugin-push": ,
            "onymos-plugin-chat": 
        ,
        "platforms": [
            "ios"
        ]
    

更新

从我的项目中删除 iOS 平台(出于其他原因)并重新添加后,我不再在启动屏幕上看到挂起行为。我仍然在控制台输出中看到错误 - 但它似乎不是我观察到的挂起的原因。我的猜测是删除和重新添加 iOS 平台会重置与我的插件之一相关的内容。

【问题讨论】:

【参考方案1】:

发布我的更新作为关闭的答案,以防其他人点击:

从我的项目中删除 iOS 平台(出于其他原因)并重新添加后,我不再在启动屏幕上看到挂起行为。我仍然在控制台输出中看到错误 - 但它似乎不是我观察到的挂起的原因。我的猜测是删除和重新添加 iOS 平台会重置与我的插件之一相关的内容。

【讨论】:

以上是关于Ionic 3/Cordova:应用程序通过 Ionic CLI 而不是通过 Xcode 运行(在 Xcode 中构建成功)的主要内容,如果未能解决你的问题,请参考以下文章

使用 IONIC 3 + CORDOVA 在 SQLite 中创建数据库

来自 http url 的 Ionic 3 (cordova) 应用程序不会作为应用程序打开,但它会在浏览器中打开

Ionic 3 cordova 遇到设备/模拟器错误 [Android]

Ionic 3 cordova-branch-sdk 插件不起作用(ios)

Ionic app,错误:..main.ts模块构建失败:错误:ENOENT

WebStorm Cordova 环境搭建