1. 程式人生 > >簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入

簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入

earch html targe bject jar itl clas article .html

簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入

技術分享圖片 (2014-02-21 17:30:17) 技術分享圖片轉載
標簽:

android

delphi

xe5

jar

sdk

分類: 編程雜集

折騰了幾天終於成功,特此分享給新接觸的同學,希望能有點兒幫助。

—————環境介紹————————

Delphi XE5 Update2

Windows7 64bit

A、以“中國氣象(www.weather.com.cn)”的天氣預報Android SDK為範例,它提供僅一個jar文件:SmartWeatherAPI_Android_3.0.2.jar (為描述方便,我改文件名為weather.jar)

(如有的Android SDK既有jar又有so文件,也沒問題,jar繼續按下面方法搞,而so文件在Delphi工程中發布到運行程序的library\lib\armeabi\目錄就可以了。註:我理解so文件就類似dll,供java在虛擬機中調用的,第三方不方便公開讓你看裏面的細節。)

B、假設在D盤創建一個目錄為D:\WorkSpace,我們的操作都在這裏面進行。

——————————————————

第一步:把Delphi自帶的classes.dex復制到D:\WorkSpace,改名為delphi-classes.dex。該文件一般在這個目錄下找到:

C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\lib\android\debug

(註:本例子使用debug版來實驗的,要用release版也同理)

第二步:把SDK的jar文件也復制到D:\WorkSpace中來,已改名為weather.jar。

第三步:用下面這個批處理dxANDmerge.bat來實現“第三方jar打包為dex文件,再將兩個dex文件合並”的目的。(關於要用到的Android開發的Windows環境變量配置,就不贅述了,網上很多文章可看。)

————————————

@echo off

setlocal

set DX_LIB="%ANDROID_HOME%\build-tools\android-4.3\lib"

echo.

echo 轉換第三方jar為dex格式

echo.

call dx --dex --verbose --output=D:\WorkSpace\weather.dex --positions=lines D:\WorkSpace\weather.jar

echo.

echo 合並dex文件

echo.

java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger D:\WorkSpace\classes.dex D:\WorkSpace\weather.dex D:\WorkSpace\delphi-classes.dex

————————————

這樣新的classes.dex裏面就有了SDK的內容了。

我們可以用dex2jar工具(另行下載)把這個新classes.dex文件轉為jar文件,然後用jd-gui工具(另行下載)打開jar文件看看,可以看到除了embarcadero原有封裝的內容,新增的天氣預報內容也包含進去了,如下圖所示:

技術分享圖片
至此,將“jar打進dex”這事兒就這麽輕松搞定了。

下面要做的事情,主要有:

1)用新的classes.dex在工程的發布設置裏面替換Delphi默認的;

2)按照人家SDK的說明文檔指引,仔細修改AndroidManifest.template.xml;

3)按照人家SDK的jar反編譯出來的java代碼,仔細翻譯成諸如JObject、JObjectClass這類型的Delphi能使用的類和接口說明。(註:我實驗了調用個別類和接口成功,說明新的dex文件確實對SDK生效了,但還沒有實際完成一套完整的SDK翻譯工作,慢慢來吧。)

介紹就到這裏。

簡便方法搞定第三方SDK的Jar包在DelphiXE5中的引入