Delphi 出一個新的版本,把原本的專案從前一版或更舊的 delphi 版本升級上來往往都是考驗,因為你不知道會發生什麼事情…在 FMX 的時代遠遠比 VCL 的時代無法捉摸多了,相信是很多人的共同心聲,網路上大家也是罵聲不斷,畢竟工具應該是用來提昇我們的生產力的,不是加重我們的工作負擔!

這次從 Delphi XE7 Upd1 升級上來,總的來說在 android 的部分並沒有遇到什麼困難,唯一比較大的變動就是筆者把自 XE5 開始使用自行編譯的 classes.dex 改變為使用 jar 的形式,這樣的好處是 jar 不需要因為 delphi 版本的變動而需要重新編譯,相反的為了相容於不同的 delphi 版本,若是要用自定義的 classes.dex,就需要因應 delphi 版本的變動而重新編譯,否則 app 就可能會發生不相容或無預警的 crash。

如何編譯 jar 呢?你可以參考 Brian Long 去年在他的 blog 上發表的這篇「Using NFC in Delphi XE7 Android apps」,後半段在「Building the Java code」有提到如何使用一個 batch file 編譯 java code 成為 jar,由於 Delphi 是在 XE7 開始支援可以 add jar 的 library,所以其實這部分的轉換在 XE7 就可以實現,只是一方面筆者偷懶,二方面也怕剛推出的東西不穩定,所以一直到 XE8 才轉換這個部分。轉換上也沒有遇到什麼困難,只要將 batch file 調整成符合你自己的環境(delphi 安裝路徑、android sdk 所在路徑等等),就可以順利編譯出 jar,然後透過之前提過的將 jar 掛入 Libraries 中即可

java code sample

package com.james.common;

import android.os.Bundle;
import android.content.Intent;

public class MyNativeActivity extends com.embarcadero.firemonkey.FMXNativeActivity {

    public native void onNewIntentNative(Intent NewIntent);

    @Override
    protected void onNewIntent(Intent intent)
    {
        super.onNewIntent(intent);
        onNewIntentNative(intent);
    }
    
}

 

to be continued....

arrow
arrow
    文章標籤
    delphi xe8 android jar
    全站熱搜

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