延續上一篇,目標是要確認 XE8 到底在新版 android 5.1.1 上行不行!你沒看錯,上一篇才說測試環境是在 android 5.1.0,沒想到過了沒兩天,nexus 7 就收到訊息通知,說 4/22 release 的 5.1.1 已經備便可以更新了,唉,這就是一系列文章難產的原因之一,外在環境一直變,叫我們怎麼來得及跟上...

不囉唆,如果您懶得看完,就先講結果吧

XE8 @ android 5.1.1 是 ok 的!

測試標的是把當初在 XE5/XE6 寫的小型 CRM app (http://jamesjuantw.pixnet.net/blog/post/185758317) 移轉到 XE8 上,其實這個 app 一直都有隨著新版 delphi 更新,因此這次其實是從 XE7 Upd1 準備更新到 XE8,前文提過,因為要到 XE8,delphi 才正式支援 android 5.x,雖然 EMBT 也有出 hotfix for XE7,但為啥名稱給的是 beta hotfix 呢?

在功能都未變更的狀況下,先看一下編譯出來的大小

版本 apk size
XE6 11.1 MB (11,660,712 bytes)
XE7 Upd1 11.7 MB (12,338,932 bytes)
XE8 10.7 MB (11,260,477 bytes)

很明顯的可以看的出來 apk 的檔案大小有縮減,app 整體操作反應上也有感覺比 XE7 來得快一些些,這個 app 有用到的元件或架構有

DataSnap

TTabControl

TListView

TClientDataSet

TPanel

TToolBar

TSpeedButton

TFloatAnimation

TCheckBox

TActionList

TEdit

TMemo

TRoundRect

TPopupBox

TShadowEffect

TLocationSensor

TTimer

TRectangle

TLabel

TLayout

TText

TWebBrowser

TIdHTTP

使用 EMBT 標準的建議,所以只有一個 Form(inherited by BaseForm),再加上一個 DataModule,主 Form 程式碼約 2 千多行,其他還有寫成共用 function 的 Unit 約 50 個。

另外因為早在 XE5/XE6 就有開始銜接 GCM(之前的文章也介紹過),所以有利用少部分的 java code 繼承 BroadcastReceiver,以便可以自行控制接收到訊息時 app 的行為(聲音、文字等表現方式),這部分在 XE5/XE6/XE7 是編譯成 classes.dex,在 XE8 的時候則變更為編譯成 jar 的格式來使用。

以下就是在測試機上的畫面,左邊是 Acer Liquid E1 (CPU =  MediaTek MT6577,android = 4.1.1),右邊是
Neuxs 7 第二代 (CPU = Qualcomm Snapdragon S4 Pro APQ8064, android = 5.1.1)

從測試結果來看,透過 DataSnap 做資料新增/修改都正常,GPS 定位、webbrowser 運作也都正確無誤,GCM 訊息接受也是沒有問題的。

另外之在 XE5/XE6/XE7 使用 GPS 定位功能的時候,如果你把 app 縮小,甚至用完 GPS 就關閉,用工具觀察的話你會發現你的 app CPU 使用率依然非常高,部分工具程式還會發出警告說此 app 會導致手機過熱

不過在 XE8 的時候這個問題已經被修正了

Delphi 雖然不完美,但是還是有在進步跟改善啊...呵呵

以下是利用 XE8 bind 自己的 jar,這種使用方式編譯出來的 apk,似乎比直接編譯成 classes.dex 來得小一點

其中 ActivityReceiver.jar、WintonNativeActivity.jar 就是自己寫的 jar,另外您也可以 disable 不需要用到的 jar,就可以進一步縮減 apk 的 size 嚕!

iOS 的部分請見下次分曉...

 

to be continued....

    文章標籤

    delphi XE8 android 5.x

    全站熱搜

    縹緲 發表在 痞客邦 留言(0) 人氣()