兩年前就接觸phonegap,也嘗試做了一個小的東西在移動平臺上。沒有深入嘗試和了解,今年有個項目用H5來做展示,同時也有在移動平臺上應用的需求。我就想到了phonegap,現在變更爲Cordova。搭建環境這裏就不描述了可以參考cordova官方網站。
移動終端應用比較簡單,包括登錄、消息列表、通知列表、全文檢索、簽到。
很快就實現了這幾個功能,在chrome瀏覽器上測試通過,通過cordova build android 進行打包。進行真機測試。
在真機上測試結果也比較順利(版本android 4.0),所有功能在真機上都順利測試通過。
隨機在同事手機上進行測試(版本android5.0.1 ),第一個登錄功能就卡殼了,輸入用戶、密碼後點擊”登錄“功能沒有響應,考慮到可能是打包版本問題。
查看AndroidManifest配置
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
否定打包版本問題,配置版本範圍最高支持android5.1.1.如果打包android版本問題,App應該無法正常安裝。
於是各種原因查找,起初懷疑ajax方式不對,因爲所有數據交換都是需要跨域。嘗試各種不同跨域方式,在瀏覽器下功能正常。
但在真機版本高於android 4.1就不能正常使用,因爲在真機上我查看不了報錯的log,所有開始沒有頭緒,排除了很多原因。
在查找過程中看到一篇文章,說道真機測試log查看問題通過一段腳本
window.onerror = function (msg, url, line) {
var idx = url.lastIndexOf("/");
if (idx > -1) {
url = url.substring(idx + 1);
}
alert("ERROR in " + url + " (line #" + line + "): " + msg);
return false;
};
終於看查看真機錯誤提示了
顯示是因爲安全問題導致,jquery腳本運行錯誤最終導致所有功能失效了。知道問題所在就好解決了。
查閱關於Content-Security-Policy資料,參考資料。
頁面中包含<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap:http://192.168.0.55 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">