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)