iOS/Android 多平台开,发的一些技巧与心得
几个方面
• 关注点
• 代码的重用
• 界⾯面与设计的重用
• 跨平台的开发工具
• Web App
• 代码的重用
• 界⾯面与设计的重用
• 跨平台的开发工具
• Web App
关注点
• 产品的功能与形式的⼀一致性
• 产品不同平台版本的同步
• 避免重复劳动
• 产品不同平台版本的同步
• 避免重复劳动
代码的重用
• 在可能的前提下, 减少代码量, 缩短开发周期
• 维护一份代码, 升级及 bug fix 更加方便
• 与别的平台之间的相互可移植性
• 积累的现有代码库的利用
• 维护一份代码, 升级及 bug fix 更加方便
• 与别的平台之间的相互可移植性
• 积累的现有代码库的利用
• iOS 和 Android 官方开发语言/运行环境的不同, 导致了很多代码无法重用.
✦ iOS: Objective-C, Native binary.
✦ Android: Java, byte code, dalvik VM.
• 界面设计, 支持框架和实现机制上的差异导致无法重用.
✦ iOS: Objective-C, Native binary.
✦ Android: Java, byte code, dalvik VM.
• 界面设计, 支持框架和实现机制上的差异导致无法重用.
• 语言层面对代码重用的支持. Native part.
★ iOS: 本身即是 native 的. ObjC 是 C 的超集, 亦有 ObjC++ 完全支持 C++
★ Android: NDK. Native library
★ iOS: 本身即是 native 的. ObjC 是 C 的超集, 亦有 ObjC++ 完全支持 C++
★ Android: NDK. Native library
• 系统/开发工具的支持
• Android NDK 允许我们做什么.
系统相关的: OpenGL ES, OpenSL, Bitmap 处理.
系统⽆无关的: libz, etc. 可以⾃自⼰己编译.
• Android NDK 允许我们做什么.
系统相关的: OpenGL ES, OpenSL, Bitmap 处理.
系统⽆无关的: libz, etc. 可以⾃自⼰己编译.
最好的例子: 游戏.
都支持 OpenGL ES, 都支持 OpenGL 1.1 和2.0, 都支持 OpenAL
都支持 OpenGL ES, 都支持 OpenGL 1.1 和2.0, 都支持 OpenAL
非游戏类应用中的重用. 适合计算复杂度高的, 以及大量 UI 无关的公用代码
所谓混合应用, 即是应用中部分采用平台自身的代码, 部分利用目前平台都支持嵌入 Web 内容的特性加入使用 HTML/Javascript/CSS 开发的内容. Web 的内容部
分可以放在云端也可以随应用打包在本地.
分可以放在云端也可以随应用打包在本地.
什么地方无法重用也不应该重用
• 跟系统运行框架和程序运行方式相关的
• 涉及到交互的
• 各自有各自方便的手段的
• 为了重用需要花费过大的代价的
• 跟系统运行框架和程序运行方式相关的
• 涉及到交互的
• 各自有各自方便的手段的
• 为了重用需要花费过大的代价的
iOS/Android 是具有不同设计风格和交互方式的系统.
- 近期有一些相互的学习
- 但从交互设计和界面风格来说还是有很多差异.
界面元素
• 系统默认的. 有类似的也有不同的.
• 自定义的. 行为是否一致
• 布局方式: 不同的布局方式
• 系统的使用习惯也会造成表现与行为的差异.
• 系统默认的. 有类似的也有不同的.
• 自定义的. 行为是否一致
• 布局方式: 不同的布局方式
• 系统的使用习惯也会造成表现与行为的差异.
采用一致的设计是否合适?
• 风格与习惯问题. 见仁见智
• 设备相关的问题. 屏幕尺寸造成的问题,Multi-touch 操作的问题.
• 系统的差异造成的影响, 比如动画效果等等.
• 风格与习惯问题. 见仁见智
• 设备相关的问题. 屏幕尺寸造成的问题,Multi-touch 操作的问题.
• 系统的差异造成的影响, 比如动画效果等等.