Мне нужна помощь, я здесь на пределе. Я разработал приложение с durandaljs и тестировал его в браузере, пока что оно работает как сон! Затем я пытаюсь развернуть приложение на устройстве Android, и все рушится!
Я следовал указаниям здесь и здесь, чтобы оптимизировать мою сборку с Weyland с помощью Node. Я получаю файл main-build.js в папке моего приложения и папку сборки, в значительной степени содержащую все в папках приложения и lib (эй!!!). Итак, первый вопрос, что мне копировать в папку www моего Android-телефона; содержимое сборки или содержимое моего исходного приложения?
В руководстве говорится, что сборка включает пользовательскую версию Almond, поэтому мне не нужно загружать requirejs в мое приложение (ура!), и мне нужно только изменить тег сценария requirejs, чтобы он указывал на main-built (какой из них находится в . /build/app/ или в ./app??).
Поэтому я использую его в своем первоначальном приложении, теперь у меня есть только две ссылки на скрипт в моем index.html.
<script type="text/javascript" src="phonegap.js"></script>
<script src="./app/main-built.js"></script>
Немного назад, в моем main.js; Я продолжал думать, как сделать так, чтобы приложение не запускалось до тех пор, пока не сработает устройство и не загрузится дом. Я видел это видео на YouTube и взял пример из кода ребят, так что теперь мой основной .js до оптимизации выглядит частично так
requirejs.config({
paths: {
'text': '../lib/require/text',
'async': '../lib/require/async',
'domReady': '../lib/require/domReady',
'durandal': '../lib/durandal/js',
'plugins': '../lib/durandal/js/plugins',
'transitions': '../lib/durandal/js/transitions',
'knockout': '../lib/knockout/knockout-2.3.0',
'bootstrap': '../lib/bootstrap/js/bootstrap',
'jquery': '../lib/jquery/jquery-1.9.1',
'jpanelmenu': '../lib/jpanelMenu/jquery.jpanelmenu.min'
},
shim: {
'bootstrap': {
deps: ['jquery'],
exports: 'jQuery'
}
}
});
define(['domReady', 'durandal/system', 'durandal/app', 'durandal/viewLocator', 'scripts/dealtag'], function (domReady, system, app, viewLocator, dealtag) {
domReady(function () {
var useragent = navigator.userAgent.toLowerCase();
if (useragent.match(/android/) || useragent.match(/iphone/) || useragent.match(/ipad/) || useragent.match('ios')) {
document.addEventListener('deviceready', onDeviceReady, false);
}
else {
onDeviceReady('desktop');
}
});
function onDeviceReady(desktop) {
if (desktop !== 'desktop')
cordova.exec(null, null, 'SplashScreen', 'hide', []);
app.title = 'My App';
app.configurePlugins({
router: true,
dialog: true,
widget: true
});
app.start().then(function () {
//Replace 'viewmodels' in the moduleId with 'views' to locate the view.
//Look for partial views in a 'views' folder in the root.
viewLocator.useConvention();
....my own initialization code
});
}
});
Итак, после оптимизации я копирую содержимое папки build + css, которая не была включена в оптимизацию, в папку www, запускаю phonegap local build android; затем я развертываю это на своем устройстве Android. Первая страница приложения (страница регистрации) загружается нормально, и в logcat я вижу много того же, что и в консоли браузера, включая некоторые из моих собственных контрольных точек console.log. Однако, когда я нажимаю на ссылку, чтобы перейти на любую другую страницу, все, что я вижу, это белый экран на моем устройстве и следующие бесконечные ошибки в logcat
Кто-нибудь знает, что я делаю неправильно, потому что многие люди, похоже, разрабатывают для Android, используя durandaljs. Заранее благодарим за любую помощь, которую вы можете оказать.