简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入
折腾了几天终于成功,特此分享给新接触的同学,希望能有点儿帮助。
—————环境介绍————————
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中的引入的更多相关文章
- maven 打包含有第三方依赖的 jar 包
maven 打包含有第三方依赖的 jar 包:mvn assembly:assembly
- 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。
Eclipse中导入外部jar包 在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可. 工具/原料 Eclipse 需要 ...
- Android studio module生成jar包,module中引用的第三方库没有被引用,导致java.lang.NoClassDefFoundError错误。
android studio 创建了一个Module生成jar包,这个module中有引用一些第三方的类库,比如 gson,volley等. 但是生成的jar包里,并没有将gson,volley等第三 ...
- IDEA中如何导入jar包、IDEA中找不到对应类改怎样解决?(详细图解过程)
今天突然心血来潮.用IDEA运行之前用eclipse编写的项目.发现遇到了一些bug,现在习惯了使用maven管理项目的依赖.一时间忘记了怎样将jar包导入项目中.特此记录一下 文章目录 1.未加入j ...
- java jar包解析:打包文件,引入文件
java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...
- IDEA 热部署 + 下载jar包放到maven中
IDEA 热部署: 1 : POM中加入devtools的依赖,就可以实现热部署 <dependency> <groupId>org.springframework.boot ...
- iOS之下拉放大,上推缩小,一个方法搞定
先来看看效果吧. 讲讲大概的实现思路:1、创建头部的视图和tableview,需要注意的是tableview要设置contentInset,contentInsent 的顶部要和头部视图的背景图的高度 ...
- 将main方法打成jar包,并引用第三方的maven jar包
一.准备工作.执行命令 学习插件: 学习apache的打包插件maven-assembly-plugin:http://maven.apache.org/plugins/maven-assembly- ...
- Android 第三方库导致jar包冲突解决办法
这几天的任务是将mapbox的工程合到程序中去,但是合并过程却出现了问题 合并方法: 在app的build.gradle中添加 dependencies { compile ('com.mapbox. ...
随机推荐
- 强关联二维材料1T—TaS2晶体
我校物理系张远波教授课题组通过一种新的实验方法——可控电荷插层,实现了对强关联二维材料1T—TaS2晶体相变的全面研究.1月26日,相关研究论文Gate-tunable phase transitio ...
- Linux 查看当前时间
一.查看和修改Linux的时区1. 查看当前时区命令 : "date -R"2. 修改设置Linux服务器时区方法 A命令 : "tzselect"方法 B 仅 ...
- eclipse搭建struts2环境及所遇到的问题
最近几天一直在搭建struts2框架,本身struts2框架的搭建是非常简单的,但不知道为什么最近就是总是报错,报了一大串的错 首先就是每次在类的根路径下创建struts.xml时,就报错,也不知道为 ...
- js简单校验form表单
/** * 数据简单校验 */ function checkData (formId) { var check = true; var emailReg = new RegExp("^[a- ...
- SweetAlert2 弹窗
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Partition List双色问题链表版
[抄题]: Given a linked list and a value x, partition it such that all nodes less than x come before no ...
- Spring框架的事务管理相关的类和API
1. PlatformTransactionManager接口 -- 平台事务管理器.(真正管理事务的类).该接口有具体的实现类,根据不同的持久层框架,需要选择不同的实现类! 2. Transacti ...
- Scrum 项目1.0--软件工程
1.确定选题 视频:http://v.youku.com/v_show/id_XMTU1OTExOTY2NA==.html 2.需求分析调查 地址:http://www.sojump.com/m/81 ...
- Debian 使用 cron 执行定时任务
在linux下有两种方法来让一个命令或者脚本执行: crontab : 执行一个任务一次或者多次. at : 只执行一次. crontab是通过读取一个crontab文件来工作,这是一个普通的文本文件 ...
- DB2错误码
SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 + 未限定的列名被解释为一个有相互联系的引用 + 动态SQL语句用分号结束 + 没有找到满足SQL语句的行 + 用DATA CAPTUR ...
(2014-02-21 17:30:17)