【问题标题】:Is it posible to generate ios app from working android app with cordova?是否可以从使用cordova的工作android应用程序生成ios应用程序?
【发布时间】:2016-07-24 01:54:01
【问题描述】:

我的问题是,我是否可以使用 Cordova 获得可运行的 android 应用程序的 ios 版本?我试过添加这样的平台:

//I add the platform
cordova platform add ios
//I compile the project
cordova build ios

然后我尝试运行它,但效果不佳,它加载一个空白屏幕,该项目说它正在运行。我认为这是一个配置问题。自动创建的 config.xml(ios) 如下所示:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.project.appios" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="BackupWebStorage" value="cloud" />
    <preference name="DisallowOverscroll" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="SuppressesLongPressGesture" value="false" />
    <preference name="Suppresses3DTouchGesture" value="false" />
    <preference name="GapBetweenPages" value="0" />
    <preference name="PageLength" value="0" />
    <preference name="PaginationBreakingMode" value="page" />
    <preference name="PaginationMode" value="unpaginated" />
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage" />
    </feature>
    <feature name="HandleOpenUrl">
        <param name="ios-package" value="CDVHandleOpenURL" />
        <param name="onload" value="true" />
    </feature>
    <feature name="IntentAndNavigationFilter">
        <param name="ios-package" value="CDVIntentAndNavigationFilter" />
        <param name="onload" value="true" />
    </feature>
    <feature name="GestureHandler">
        <param name="ios-package" value="CDVGestureHandler" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Camera">
        <param name="ios-package" value="CDVCamera" />
    </feature>
    <preference name="CameraUsesGeolocation" value="false" />
    <feature name="File">
        <param name="ios-package" value="CDVFile" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Geolocation">
        <param name="ios-package" value="CDVLocation" />
    </feature>
    <feature name="Media">
        <param name="ios-package" value="CDVSound" />
    </feature>
    <feature name="Capture">
        <param name="ios-package" value="CDVCapture" />
    </feature>
    <feature name="Contacts">
        <param name="ios-package" value="CDVContacts" />
    </feature>
    <feature name="FileTransfer">
        <param name="ios-package" value="CDVFileTransfer" />
    </feature>
    <feature name="InAppBrowser">
        <param name="ios-package" value="CDVInAppBrowser" />
    </feature>
    <content src="index.html" />
    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="*" />
</widget>

根 config.xml 如下所示:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.medife.appios" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>*****</name>
    <description>
        ******************
    </description>
    <author email="*******************************">
        *********
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="*" />
    <preference name="SplashScreen" value="screen"/>
    <preference name="SplashScreenDelay" value="5000" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="orientation" value="portrait" />
    <platform name="android">
    <!-- you can use any density that exists in the Android project -->
        <splash src="res/screen/android/splash-port-hdpi.png" density="port-hdpi"/>
        <splash src="res/screen/android/splash-port-ldpi.png" density="port-ldpi"/>
        <splash src="res/screen/android/splash-port-mdpi.png" density="port-mdpi"/>
        <splash src="res/screen/android/splash-port-xhdpi.png" density="port-xhdpi"/>
    </platform>
    <platform name="ios">
        <!-- images are determined by width and height. The following are supported -->
        <splash src="res/screen/ios/default-568-iphone.png" width="640" height="1136"/>
        <splash src="res/screen/ios/default-667-iphone.png" width="750" height="1334"/>
        <splash src="res/screen/ios/default-736-iphone.png" width="1242" height="2208"/>
    </platform>
    <icon src="res/logo/logo.png" />
</widget>

我已删除作者、描述和电子邮件...

更新:我注意到,在 XCode 控制台中,缺少一些插件,因此我正在检查有关此问题的其他 stackoverflow 答案。我认为是因为应用程序的后端是用旧版本的 iOS 制作的。

提前致谢!

【问题讨论】:

  • 可能你只需要在使用 ios 配置时执行Cordova Prepare
  • @Edu,您使用的是哪个版本的 iOS?任何错误跟踪?您是否在您的应用中进行 ajax 调用来呈现页面?
  • @Gandhi 我正在使用最新版本的 iOS,至少我已将其更新到最新版本。我没有错误跟踪,但查找 jquery 错误更加困难,因为我无法在 iOS 中使用谷歌开发人员工具。我在进行 Ajax 调用,但不在渲染中。我也提到过它,但它在 Android 上运行得非常好。我没有提到但可能有帮助的是我还没有设置启动画面。
  • @Edu,您可以使用 Safari 的开发菜单下的 Web Inspector 中的调试来调试 iOS 中的问题以缩小问题范围。
  • @Gandhi 我会试一试,但我认为它不是 jquery 问题,因为它在 Android 上运行良好,我几乎可以肯定它是 Config.xml 问题。但我会试试的。编辑:我试过了,空白控制台,没有错误,没有启动,没有控制台日志,什么都没有,所以它没有启动 jquery ......很奇怪......

标签: android ios cordova


【解决方案1】:

我终于明白了。我发布了答案,所以如果有人遇到同样的问题,它可以提供帮助:

首先有几件事: 1)闪屏插件没有问题,效果很好,我刚刚更新了它,它很漂亮。 2)我不得不更改一些 jquery,因为它在 ios 上运行不正常: 我变了

$(document).ready(function() {
    onDeviceReady();
});

document.addEventListener('deviceready', onDeviceReady, false);

最后,这是我的 config.xml(适用于 Android 和 iOS):

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.medife.mobile" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>APP NAME</name>
    <description>
        YOUR DESCRIPTION
    </description>
    <author email="YOURMAIL" href="">
        YOUR NAME
    </author>
    <content src="index.html" />
    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="*" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="7500" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="orientation" value="portrait" />
    <preference name="AutoHideSplashScreen" value="false" />
    <platform name="android">
        <splash density="port-hdpi" src="res/screen/android/splash-port-hdpi.png" />
        <splash density="port-ldpi" src="res/screen/android/splash-port-ldpi.png" />
        <splash density="port-mdpi" src="res/screen/android/splash-port-mdpi.png" />
        <splash density="port-xhdpi" src="res/screen/android/splash-port-xhdpi.png" />
    </platform>
    <platform name="ios">
        <splash src="res/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136"/>
        <splash src="res/screen/ios/Default-667h.png" width="750" height="1334"/>
        <splash src="res/screen/ios/Default-736h.png" width="1242" height="2208"/>
    </platform>
    <icon src="res/logo/logo.png" />
    <plugin name="cordova-plugin-whitelist" spec="~1.2.1" />
    <plugin name="cordova-plugin-splashscreen" spec="~3.2.1" />
    <plugin name="cordova-plugin-geolocation" spec="~2.1.0" />
    <plugin name="cordova-plugin-camera" spec="~2.1.1" />
    <plugin name="cordova-plugin-contacts" spec="~2.0.1" />
    <plugin name="cordova-plugin-file" spec="~4.1.1" />
    <plugin name="cordova-plugin-file-transfer" spec="~1.5.0" />
    <plugin name="cordova-plugin-inappbrowser" spec="~1.3.0" />
</widget>

我的准时问题是我使用window.outerHeightwindow.outerWidth 来获取高度和宽度,但它在ios 上不起作用,我不得不使用window.innerHeightwindow.innerWidth

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多