手头上的跨平台项目进行了差不多有两周了,从Windows8版本移植到Android平板版本过程中遇到了很多问题,但也取得了一些小突破。
1、 首先Android和IOS系统是不支持IndexedDB的,但支持WebSql,而Windows8版本的是使用的是IndexedDB,所以需要做一个中间层来适配WebSql的接口。目前该部分工作已经完成,初步的测试也通过了。
2、 Android的版本太多,模拟器版本也很多,使用Phonegap的接口会出现很多版本冲突的问题。
3、 Android基于Phonegap跨平台开发比较难调试,程序没有响应了,调试信息也不会报错,因此不知道从哪里修改bug。
4、 使用Bootstrap来重写界面的话,也会出现各个平台界面显示的不一致的问题。
5、 目前Android版本的程序打包安装到三星平板上,大部分界面显示正常,但是功能上还没有调试通过,由于以上提到的2、3点的问题,进展比较慢。
6、使用phonegap 2.9版本以上的要注意了,js代码的第一行就要调用这一句:
document.addEventListener("deviceready", deviceIsReady, false);
而不是 $(document).ready()
<script>
document.addEventListener("deviceready", deviceIsReady, false);
function deviceIsReady() {
/*This is where all of you initialization code should go.
With PhoneGap the deviceready should be the first thing*/
$.ajax({
type: "get",
//async: false,
timeout: 30000,
dataType: "text",
url: "http://www.51shuaige.com/main.asmx/Connect",
success: function (msg) {
//alert(msg);
var json = eval('(' + msg + ')');
if (json.Status == "true") {
sessionStorage["connect_smis"] = "true";
$("#setting_sysinfo_connection_status").html('<span class="green">Disconnected</span>');
$("#setting_sync_btn").attr("class", "button_class btn_height30");
}
},
error: function () {
//alert("ajax err");
sessionStorage["connect_smis"] = "false";
$("#setting_sysinfo_connection_status").html('<span class="red">Disconnected</span>');
$("#setting_sync_btn").attr("class", "deactive_button_class btn_height30");
}
});
}
</script>
即使用
document.addEventListener("deviceready", deviceIsReady, false);
来代替
$(document).ready()
以上是使用phonegap进行移动跨平台在Android平台开发所遇到的问题,大家在选择phonegap作为技术选型的时候要注意了。