适用于Android和Android的相同Titanium代码库苹果手机

时间:2012-09-24 11:23:03

标签: android iphone titanium

我一直在努力为Iphone和iPad创建单一的代码库。适用于中级应用的Android。 (4个选项卡,多个窗口,地图等)使用itanium 2.1 API。 但是,我发现Android平台上的东西不能像Iphone上那样顺畅或自愿地工作。 UI元素。 Android上的UI响应速度也很低迷。 厨房水槽的例子非常简单。我正在寻找一个企业就绪的应用程序,必须在未来几年内维护。 有没有人在平台怪癖上做过类似的工作,并成功地创造了功能齐全的iOS& amp;来自SAME代码库的Android应用程序?

2 个答案:

答案 0 :(得分:4)

我使用编译时CommonJS机制获得了很多成功,因为它具有根视图,然后具有特定于操作系统的功能。

例如,我的独立于操作系统的视图可能是 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;
};

<强>机器人/ UI / 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 ,以便将按钮添加到正确的位置。它允许大多数视图相同,但特定于操作系统的东西要正确分离。

答案 1 :(得分:3)

Titanium不适用于所有人的1个代码库。您需要为每个操作系统重写内容。但是,一些应用程序开发人员声称已经重用了95%的代码。因此,只有5%的代码是特定于操作系统的。但我确信他们的代码充满了if-elses。

我建议做的是,为了能够正确地维护它,没有成千上万的if-else结构,构建一个后端核心,并专门为每个操作系统的UI相关事务编写代码。这样,您就可以获得Android的UI相关代码,iOS的UI相关代码以及适用于这两者的1个核心代码。

由于Android和iOS差异很大,编写单个代码库将确保您永远不会使用特定于操作系统的功能(如Android硬件菜单按钮或iOS NavigationGroup),并且会让UI看起来不直观。