标签: cordova-ios

Cordova错误:您的ios平台没有Api.js

我正在尝试构建一个cordova ios应用程序,但没有太多的运气和奇怪的错误.

不推荐使用此版本的Cordova和旧版本的cordova-ios.升级到cordova-ios@4.0.0或更新版本.

错误:您的ios平台没有Api.js

第一个警告说我的cordov-ios版本很旧,这很奇怪,因为这是我的输出:

$ cordova --version
7.0.1



$ cordova platform version ios

Installed platforms:
  ios 4.4.0
Available platforms: 
  android ~6.2.2
  blackberry10 ~3.8.0 (deprecated)
  browser ~4.1.0
  osx ~4.0.1
  webos ~3.7.0
Run Code Online (Sandbox Code Playgroud)

所以我显然有必要的最新版本.

然后是Api.js错误.是什么造成的?

错误:您的ios平台没有Api.js

有任何想法吗?

cordova cordova-ios

45
推荐指数
2
解决办法
6万
查看次数

执行策略异常注册失败并被跳过:Error Domain=NSPOSIXErrorDomain Code=1“Operation not allowed”

我有一个离子应用程序,我正在尝试运行它:

ionic cordova build ios
Run Code Online (Sandbox Code Playgroud)

编译成功,但在它成功之前我看到了这些错误:

RegisterExecutionPolicyException /Users/moblizeit/Library/Developer/Xcode/DerivedData/Scan_Buddy-bgqkrrwvotqcxbgakwtfvdcnmkvx/Build/Intermediates.noindex/ArchiveIntermediates/Scan\ Buddy/InstallationBuildProductsLocation/Applications/Scan\ Buddy.app (in target 'Scan Buddy' from project 'Scan Buddy')
    cd /Users/moblizeit/code-repo/apps/business-card-scanner/businesscardscanner/platforms/ios
    builtin-RegisterExecutionPolicyException /Users/moblizeit/Library/Developer/Xcode/DerivedData/Scan_Buddy-bgqkrrwvotqcxbgakwtfvdcnmkvx/Build/Intermediates.noindex/ArchiveIntermediates/Scan\ Buddy/InstallationBuildProductsLocation/Applications/Scan\ Buddy.app
note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'Scan Buddy' from project 'Scan Buddy')

Run Code Online (Sandbox Code Playgroud)

关于什么是失败以及如何解决它的任何想法?

ios cordova ionic-framework cordova-ios

22
推荐指数
0
解决办法
6074
查看次数

Cordova 8:无法从"ios"安装,因为它不包含package.json文件

我删除了我的ios平台,并试图再次添加它,但现在它说有一个问题,它需要package.json.

如何修复ios平台,使其具有package.json?

使用cordova-ios@4.5.4运行8.1.2(也在8.0中试用)

$ cordova platform add ios
{ Error: npm: Command failed with exit code 1 Error output:
npm ERR! code ENOLOCAL
npm ERR! Could not install from "ios" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mikenelson/.npm/_logs/2018-10-11T09_47_23_544Z-debug.log
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-common/src/superspawn.js:169:23)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
stderr: 'npm ERR! code ENOLOCAL\nnpm ERR! Could not install from "ios" as …
Run Code Online (Sandbox Code Playgroud)

cordova cordova-ios

16
推荐指数
2
解决办法
6917
查看次数

无法在Cordova上添加iOS平台

我在尝试着:

cordova platform add ios
Run Code Online (Sandbox Code Playgroud)

但是我总是收到以下错误:

Failed to install 'cordova-plugin-whitelist':CordovaError: Plugin doesn't support this project's cordova-ios version. cordova-ios: 3.8.0, failed version requirement: >=4.0.0-dev
    at checkEngines (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:116:29)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:289:16
    at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:749:13)
    at /usr/local/lib/node_modules/cordova/node_modules/q/q.js:557:44
    at flush (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:108:17)
    at process._tickCallback (node.js:355:11)
Plugin doesn't support this project's cordova-ios version. cordova-ios: 3.8.0, failed version requirement: >=4.0.0-dev
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json

    {
  "name": "App",
  "version": "1.0.0",
  "description": "App",
  "dependencies": {
    "gulp": "^3.5.6",
    "gulp-coffee": "^2.1.1",
    "gulp-sass": "2.0.0",
    "gulp-slim": "",
    "gulp-concat": "^2.2.0",
    "gulp-minify-css": …
Run Code Online (Sandbox Code Playgroud)

ios cordova cordova-ios

12
推荐指数
1
解决办法
4612
查看次数

在与iOS交互之前,Cordova设备尚未在iOS中启动

我有一个非常奇怪的错误,在用户与操作系统本身交互之前,设备就绪事件不会在iOS设备中触发,这就是按下前面的按钮,通过向下拖动显示通知中心或者拖动设备设置.

一旦用户开始拖动iOS通知中心,就会启动设备.

像这样简单的东西是行不通的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap:* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />

  <title></title>

  <!-- cordova script (this will be a 404 during development) -->
  <script src="cordova.js"></script>
</head>

<body>
  <div id="log"></div>

  <script type="text/javascript">
    var log = document.getElementById("log");
    if(window.cordova){
        log.innerHTML = "with cordova";
        document.addEventListener("deviceready", function onDeviceReady(){
            log.innerHTML = "deviceready";
        }, false);
    }else{
        log.innerHTML = "with browser";
    }
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

cordova content-security-policy cordova-ios

11
推荐指数
1
解决办法
7696
查看次数

为什么iFrame中的链接在系统safari中打开?

在构建之间(我不确定是什么改变来触发这个),一个应用程序来自iOS中的以下行为.

  • 主webview加载index.html,并且有一个iframe,其中包含许多锚点
  • 锚点将保留在iFrame中,除非使用从中运行的JavaScript进行操作和重定向 index.html

至:

  • 主webview加载index.html,并且有一个iframe,其中包含许多锚点
  • 单击iFrame内的任何锚点触发位置更改的任何操作都会导致新页面加载到Safari应用程序中而不是iFrame中

我安装了最新版本cordova-plugin-inappbrowser(此时为1.3.0),但这似乎并没有干扰任何事情.

我已经验证我仍然可以使用JavaScript index.html来更改框架内锚点的属性,以及添加事件.

我使用以下CSP:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';">

我不确定这是否与它有关.

我尝试了一些iframe沙箱属性试图看到什么棒,但没有一个改变结果.目前它位于:

<iframe id="the-iframe" sandbox="allow-scripts allow-modals allow-popups allow-popups-to-escape-sandbox allow-top-navigation allow-forms allow-same-origin"></iframe>

srciframe的动态设置.

我已经打开了一个关于cordova 的错误报告,看看这是否可能是一个bug而不是一个功能.

iframe cordova cordova-ios

8
推荐指数
1
解决办法
2076
查看次数

为什么 Angular 8 路由器在带有 WkWebView 的 Cordova IOS 中不起作用?

我有一个用Angular8构建的现有应用程序,它的代码由一个网站和 2 个用于Android和 的移动应用程序共享,并IOSCordova. 它运行良好,但 Apple 宣布他们很快将不再支持使用UIWebView以下内容构建的应用程序:

自 2020 年 4 月起,App Store 将不再接受使用 UIWebView 的新应用程序和自 2020 年 12 月起使用 UIWebView 的应用程序更新。

所以我被迫将它迁移到WkWebView. 我知道在Cordova存储库和其他地方有几个线程讨论可能的迁移计划(例如,请参见此处)。
我还阅读另一个问题,但它很旧(Angular 的不同版本)并且没有提供任何具体的解决方案。

所以我决定使用cordova-plugin-wkwebview-engine插件,这在我的情况下似乎是最简单的解决方案。
一切都很顺利,直到我在 IOS 模拟器中启动我的应用程序并看到路由不再工作。
我设法通过路由将问题减少到最小的 Angular 应用程序,你可以在这里看到它的工作。
我把重现问题所需的所有步骤都放在了这个存储库中

以下步骤需要具有node,npmcordova全局安装:
1. 克隆存储库:git clone https://github.com/sasensi/cordova-ios-angular.git
2. 移动到存储库目录:cd cordova-ios-angular
3. 安装依赖项:npm i
4. 创建cordova …

cordova wkwebview cordova-ios angular angular-router

7
推荐指数
1
解决办法
3548
查看次数

Ionic Cordova项目在构建和更新ios时返回错误

我正在运行一个离子v1项目,我刚刚将我的cordova-ios更新到4.5.0.我的cordova,节点和离子版本如下

cordova版本6.4.0节点版本6.9.0离子版本1.7.15 cordova-ios 4.5.0

每次我运行这个ionic build ios,我都会收到一个错误

Error: cordovaProject.projectConfig.getFileResources is not a function
Run Code Online (Sandbox Code Playgroud)

每次我运行这个ionic platform update ios我得到这个错误

mv: no such file or directory: /{PROJECT_PATH}/platforms/ios/Loanstreet Partners.xcworkspace/xcshareddata/xcschemes/__PROJECT_NAME__.xcscheme
Run Code Online (Sandbox Code Playgroud)

有点混淆要采取什么措施来纠正这个问题.任何帮助赞赏.

xcode ios cordova ionic-framework cordova-ios

6
推荐指数
0
解决办法
735
查看次数

如何删除cordova-plugin-compat?

在cordova-android 6.3.0(https://cordova.apache.org/announcements/2017/09/27/android-release.html)的发行说明中,记下cordova-plugin-compat了必须删除的内容

如果我试试

cordova plugin rm cordova-plugin-compat
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

[错误]运行cordova插件时发生错误删除cordova-plugin-compat --save(退出代码1):

错误:插件'cordova-plugin-compat'需要(cordova-plugin-calendar,cordova-plugin-camera,cordova-plugin-file,cordova-plugin-geolocation),跳过卸载.(如果尝试更新,请尝试--force)

如果我然后尝试--force删除,它的工作,插件被删除,我能够构建我的Android应用程序.

但是,我刚刚删除了我的iOS平台再次添加它,我现在面对错误

cordova准备ios错误:找不到插件"cordova-plugin-compat"的plugin.xml.请尝试重新添加.

[错误]运行cordova prepare ios时出错(退出代码1).

知道我做错了什么吗?应该真的cordova-plugin-compat被删除?为什么我的iOS平台引用它,我以为它只适用于Android?

我使用cordova-android@6.3.0和cordova-ios@4.5.1

PS:如果我删除并添加iOS平台,compat插件会自动添加为package.json和package-lock.json中的参考

UPDATE

最后一个插件发布(https://cordova.apache.org/news/2017/11/10/plugins-release.html)最有可能分别解决这个问题,看起来问题是cordova-plugin-compat从其他插件引用插件.但,

我还没有完全测试它并解决它,因为我正在使用另一个插件,其中也引用了compat(https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin/issues/426).

我将保持这个线程打开,直到我能100%确认这解决了compat的引用.

最终更新

Calendar-PhoneGap-Plugin'cordova-plugin-compat' 删除依赖关系的PR 通过,我能够删除这个最后一个插件没有"强制"

cordova cordova-plugins cordova-ios

6
推荐指数
1
解决办法
8338
查看次数

Cordova iOS在定位远程服务器时崩溃

我有一个基于Angular 1.6和Ionic v1的cordova应用程序.我在iOS上面临一个可怕的问题,我甚至不知道出了什么问题.我将解释这个问题以及到目前为止我所尝试的内容,希望有人会对此有所了解.

问题
我们有一个简单的屏幕,你可以填写一些文字并添加附件.对于附件,您可以:

  • 从相机拍照
  • 用相机拍摄视频
  • 录制音频
  • 从您的图书馆中选择
  • 从您的iCloud Drive(iOS)或文件系统(Android)中选择

然后,您可以保存记录,该记录将所有内容存储在文件系统上.或者上传到服务器,再次将记录存储在您的设备上.

问题是,当我从库或任何其他来源选择文件时,应用程序很快意外崩溃.我可以添加附件并保存/上传,但是当我离开时,应用程序崩溃了.这只发生在iOS上.没有错误,没有警告,没有可调试的输出,只是崩溃.我检查了iPhone上的崩溃日志,显然主线程被阻塞超过5秒.这导致看门狗违规异常被抛出.很难说是什么导致这个线程锁定,不知道.

我正在使用运行iOS 12.1的iPhone 8.值得一提的是,该应用程序在模拟器上工作正常,没有错误或崩溃.

我迄今为止所做的
一切起初,我认为我的代码可能出了问题.所以我逐行检查了每个代码文件,重构了我的JS代码并提高了代码质量.确保promises按预期工作,解决JSLint/TSLint警告等问题.

我已将所有cordova插件更新到最新版本.同时删除了两个平台并添加了最新版本.他们都没有帮助.所以我想也许我错过了配置怪癖等等.通过github文档和SO线程挖掘,找不到任何有用的东西.我尝试过的其他一些事情:

  • 在我们的生产服务器上禁用HTTPS,并通过HTTP发送所有内容
  • NSAppTransportSecurity设置添加到*.plist文件,并在我们的域中列出白名单
  • 使用内容安全策略进行修改,甚至完全删除它
  • 隐私说明已正确配置(NSCameraUsage等)

他们都没有工作.我已经在这个问题上苦苦挣扎了两个星期了.

奇怪的部分
令我困惑的是,当我定位我的本地开发机器时,也就是说,当我将API调用的基本URL设置为指向我的本地IIS时,应用程序运行得非常好.没有错误/错误,没有崩溃.

但是当我瞄准我们的远程服务器时,当我尝试使用附件(相机,iCloud等)时,应用程序崩溃了.我不知道我在这里缺少什么.我的机器和远程服务器之间没有区别.两者都运行完全相同的软件,相同的配置,并且移动应用程序是相同的构建,在同一设备上运行.

所以我可以肯定地说,这个问题与我的应用程序代码或Cordova及其插件无关.在定位我的本地IIS时,相同的构建工作完美.

我的应用程序已经投入生产,现在需要修复.这让我很生气,我已经尝试了所有我能想到的东西,但仍然没有运气.有没有人有类似的问题?任何帮助表示赞赏.

我没有权限分享我的代码,就像我说的那样,代码没有任何问题,在针对我的本地IIS时,它的工作原理非常好.但是供您参考,这里有一些关于我的项目的信息.

Config.xml中的首选项

<preference name="SplashScreen" value="screen" />
<preference name="windows-target-version" value="10.0" />
<preference name="AndroidPersistentFileLocation" value="Internal" />
<preference name="iosPersistentFileLocation" value="Library" />
<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="BackupWebStorage" value="local" />
Run Code Online (Sandbox Code Playgroud)

Cordova插件

<plugin name="cordova-plugin-geolocation" spec="^2.4.3">
    <variable name="GEOLOCATION_USAGE_DESCRIPTION" value="Location access allows …
Run Code Online (Sandbox Code Playgroud)

mobile ios ionic-framework cordova-ios

6
推荐指数
1
解决办法
222
查看次数