PhoneGapBuild-локальные ресурсы не загружаются в webview


Я пытаюсь взять свой мобильный сайт AngularJS и обернуть его в гибридное приложение PhoneGap / Cordova, используя сайт PhoneGapBuild. Я могу успешно загружать, создавать и устанавливать приложения для IOS и Android, однако при запуске приложения на любом устройстве я получаю только пустой белый экран.

Дополнительная информация:

    Это моя первая попытка создать мобильное приложение.
  • я использую build.phonegap.com создание HTML-ресурсов моего мобильного сайта в виде гибридного приложения для android и ios используется конфигурация.xml-файл (см. выше).
  • целями являются Android sdk версии 7 и iOS по умолчанию.
  • я тестирую приложение на Android Charge и iPhone 5c

Я использовал отладчик "weinre" для консоли.журнал "окна.Кордова " существует и не существует. Однако такие вещи, как " окно.угловой" и " окно._ "do существует, потому что я загружаю их с внешнего CDN. Похоже, что ни один из моихлокально указанных активов не загружается (подтверждено консолью.логи в них). Я пробовал ссылки " / cordova.js", " www / cordova.js", " /www / cordova.js " все без толку.

Есть ли разрешение или конфигурация XML, которую я пропускаю, или что-то еще полностью?

Чтобы быть ясным, я ссылаюсь на Кордову в своем указателе.html-файл:
<script src="cordova.js"></script>

Вот мой конфигурационный файл:

<?xml version="1.0" encoding="utf-8"?>

<widget id="com.tristatetennis.app" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>TriStateTennis</name>
    <description>Tennis</description>
    <content src="index.html" />
    <icon src="icon.png" />
    <access origin="*" />
    <preference name="permissions" value="none" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="true" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="14" />
    <preference name="android-installLocation" value="auto" />
    <plugin name="cordova-plugin-battery-status" />
    <plugin name="cordova-plugin-camera" />
    <plugin name="cordova-plugin-media-capture" />
    <plugin name="cordova-plugin-console" />
    <plugin name="cordova-plugin-contacts" />
    <plugin name="cordova-plugin-device" />
    <plugin name="cordova-plugin-device-motion" />
    <plugin name="cordova-plugin-device-orientation" />
    <plugin name="cordova-plugin-dialogs" />
    <plugin name="cordova-plugin-file" />
    <plugin name="cordova-plugin-file-transfer" />
    <plugin name="cordova-plugin-geolocation" />
    <plugin name="cordova-plugin-globalization" />
    <plugin name="cordova-plugin-inappbrowser" />
    <plugin name="cordova-plugin-media" />
    <plugin name="cordova-plugin-network-information" />
    <plugin name="cordova-plugin-splashscreen" />
    <plugin name="cordova-plugin-vibration" />
    <!-- <plugin name="cordova-plugin-whitelist" version="1" /> -->
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

Спасибо

2 3

2 ответа:

Хорошая новость заключается в том, что ваш config.xml выглядит довольно хорошо, лучше, чем большинство.

  1. Просто чтобы быть уверенным, мы говорим о PGB (PhoneGap Build), облачный сервис сборки от Phonegap/Adobe.

  2. Большинство ваших проблем проистекают из того, что вы натыкаетесь на
    #5 при разработке приложения, думает phonegap работает как веб-сайт или webbrowser. из лучших ошибок разработчиков, новых для Cordova / Phonegap

    Сделать конечно, Вы читаете все жирные предложения, потому что вам, вероятно, придется читать это снова и снова.

    В той части, о которой я говорил ранее, ваше приложение не может быть оболочкой для вашего сайта, вот что вам нужно знать:

    цитата руководство Apple iTunes - 2.12

    Приложения, которые не очень полезны, уникальны, являются просто веб-сайтами, объединенными в приложения, или не обеспечивают никакой долговременной развлекательной ценности, могут быть отклонено

  3. Для Phonegap Build это основные активы (index.html, config.xml) должно быть, в корневом каталоге. Это означает, что оба файла * должны * находиться в одном каталоге. Это также означает, что подкаталоги могут включать в себя другие связанные с вебом ассесты, такие как javascript, css и другие веб-страницы.

    Эта ошибка происходит от спотыкания в #1 изглавных ошибок разработчиков, новых для Cordova/Phonegap . Если вы использовали Cordova/Phonegap CLI , то config.xml сидит один каталог ниже index.html, а index.html сидит в www/.

  4. Если вы не используете phonegap-version в config.xml, вы получите последнюю версию, которая на данный момент cli-5.2.0. Это имеет много последствий.

    Вы не можете просить android-minSdkVersion меньше, чем то, что будет поддерживать компилятор. В документации сказано, что 7-это нормально, но это ошибка. Самый низкий поддерживаемый Android API - 14 (Ice Cream Sandwich).

    Это требование чрезвычайно трудно реализовать. потому что вы должны прочитать документацию *Cordova*. руководство по платформе Android -> требования и поддержка. Если вы хотите поддерживать 7, то вам нужно будет использовать Phonegap CLI.

  5. Если вы используете Android 6.0, это еще не поддерживается PGB. Если вы используете iOS9, Cordova только недавно былавыпущена 08 декабря 2015 (сhot fixes 18 декабря 2015 ), это еще не поддерживается PGB. это потому, что PGB все еще использует Cordova компиляторы, чтобы сделать свою работу.

  6. Вы можете использовать cordova.js или phonegap.js. Это не имеет значения, оба поддерживаются. Подробнее см.: Documentaion - > введение - > начало работы с Build -> разделы -> убедитесь, что вы все еще можете получить доступ к API PhoneGap

  7. Убедитесь, что вы используете версию со всеми плагинами.

    Documentaion - > Конфигурирование -> Плагины -> включая плагин в ваш проект

    Если вы опустите тег spec (version), ваше приложение всегда будет построено с использованием последней версии плагина. Он будет обновляться автоматически при следующем обновлении кода приложения после обновления плагина, что может привести к неожиданному поведению.

ТАКЖЕ, Вот некоторые вспомогательные ссылки и часто задаваемые вопросы, чтобы помочь:

Оказывается, моя проблема была связана с интеграцией AngularJS с PhoneGap / Cordova. В первую очередь эта специфическая проблема была связана с тегом base в моей HTML-разметке. Angular требует базового тега, когда режим html5 установлен в true. Однако режим html5 не будет работать с PhoneGap / Cordova, как указано здесь. Для решения этой проблемы необходимо выполнить следующие действия:

  1. полностью удалите тег base из HTML-разметки
  2. убедитесь, что все URL ссылки являются относительными (т. е. никаких ведущих "/")
  3. Установите $locationProvider.html5Mode (false);
  4. $sceDelegateProvider.resourceUrlWhitelist(['**']); (docs )
  5. $compileProvider.aHrefSanitizationWhitelist (/^\s*(https?/ ftp / mailto / file / tel):/); (ссылка )

Надеюсь, это кому-то поможет