Intereting Posts
Вы используете метод onPostCreate ()? Как увеличить размер представления моего списка? Android Espresso: longClick () не работает и ведет себя как клик () Как реализовать базу данных объектов один-ко-многим в sqlite для android Соглашение об именах с сериализацией / десериализацией Firebase? Служба определения местоположения Android сбрасывает батарею – API Fused Location Обратитесь к ActionBarSherlock из библиотеки Как включить Пробуждение в вариантах разработчика с использованием АБР? Как протестировать файл расширения без публикации приложения на рынке Android Получение ошибки «Активность Java.lang.IllegalStateException была уничтожена» при использовании вкладок с ViewPager Проблема Weird MapView; Ошибка PixelConverter Filetransfer в android через xmpp? В Android —- Как мы можем получить слово, которое говорит в Text to Speech? (С помощью Android Studio) AVD получает сбой во время запуска моего приложения Итак, как я могу видеть журналы в Jelly Bean?

Та же база титановых кодов для Android и Iphone

Я пытаюсь создать единую базу кода для Iphone & Android для приложения среднего уровня. (4 вкладки, несколько окон, карт и т. Д.) С использованием itanium 2.1 API. Тем не менее, я обнаружил, что вещи на платформе Android не работают так гладко или охотно, как на Iphone epsecially tableviews & UI elemnts. Отзывчивость пользовательского интерфейса на Android также вяло. Примеры кухонной раковины довольно просты. Я смотрю готовое приложение для предприятия, которое должно поддерживаться как минимум через пару лет. Кто-нибудь работал над подобными линиями с причудами платформы и добился успеха в создании полностью функциональных приложений для iOS и Android из SAME codebase?

Титан не предназначен для 1 кодовой базы для всех. Вам нужно переписать материал для каждой ОС. Однако некоторые разработчики приложений заявляют, что повторно использовали 95% своего кода. Таким образом, только 5% кода зависит от ОС. Но я уверен, что их код заполнен if-elses.

То, что я рекомендую делать, чтобы иметь возможность поддерживать его должным образом, без тысяч конструкций if-else, создает единое базовое ядро ​​и записывает код специально для связанных с пользовательским интерфейсом вопросов для каждой ОС. Таким образом, у вас есть код, связанный с UI для Android, код UI для iOS и 1 ядро, работающее для обоих.

Поскольку Android и iOS сильно отличаются друг от друга, написание одной кодовой базы будет гарантировать, что вы никогда не сможете использовать специфичные для ОС функции (например, кнопку меню аппаратного обеспечения Android или iOS NavigationGroup) и позволят пользовательскому интерфейсу выглядеть неинтуитивно понятным.

Я получаю много успеха, используя механизм CommonJS для компиляции, для представления корневого представления, которое затем имеет os-специфические возможности.

Например, мое os-независимое представление может быть ui / MyView.js :

var createAddButton = require("ui/MyView.AddButton"); var MyView = function() { var self = Ti.UI.createWindow(); createAddButton(self, function() { alert('ADD!'); }); return self; }; module.exports = MyView; 

Затем я создаю os-специфические функции для его обработки:

iphone / UI / MyView.AddButton.js

 module.exports = function(view, addHandler) { var addButton = Titanium.UI.createButton({ systemButton: Titanium.UI.iPhone.SystemButton.ADD }); addButton.addEventListener("click", addHandler); view.rightNavButton = addButton; }; 

андроид / щ / MyView.AddButton.js

 module.exports = function(view, addHandler) { view.activity.onCreateOptionsMenu = function(e){ var menuItem = e.menu.add({ title: "Add" }); menuItem.addEventListener("click", addHandler); }; }; 

Система CommonJS, которую они внедрили, выберет подходящую версию MyView.AddButton.js, чтобы кнопка была добавлена ​​в нужное место. Это позволяет большинству взглядов быть одинаковыми, но os-specific вещи должны быть отделены должным образом.