简便方法搞定第三方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. ...
随机推荐
- vs2010+Aspx进行sharepoint2010工作流开发(3) 资料整理
http://www.cnblogs.com/janet/archive/2010/04/24/1719315.html http://www.cnblogs.com/poissonnotes/arc ...
- django1.8模板位置的设置setting.py
大多数django教程比较老,给出的template的设置方案为: 更改工程下的setting.py文件, TEMPLATE_DIRS = ( os.path.join( APP_DIR, ' ...
- vs2010下载Microsoft Visual Studio 2010 Express(vs2010中文版下载)速成官方合集正式版
http://www.xiazaiba.com/html/1832.html VB.NET 2010 Express: 2KQT8-HV27P-GTTV9-2WBVV-M7X96VC++ 2010 E ...
- php页面的基本语法
概述: 1. PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器. 2. PHP 脚本以 <?php 开始,以 ?> 结束,可以放到文档中的任何位置. 3. 当 PHP 解析 ...
- iOS - OC - 网络请求 - 中文转码
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- php Pthread 多线程 (五) 线程同步
有些时候我们不希望线程调用start()后就立刻执行,在处理完我们的业务逻辑后在需要的时候让线程执行. <?php class Sync extends Thread { private $na ...
- 3.说一下你了解的弹性FLEX布局.
页面布局一直都是web应用样式设计的重点 我们传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS ...
- Go开发之VScode安装
1.找到官网 https://code.visualstudio.com/ 2根据自己机器环境下载 3.下载vscode地址,macos版本 https://vscode.cdn.azure.cn/s ...
- 《计算机网络》谢希仁(第7版) 第四章 c语言http://c.biancheng.net/cpp/html/3137.html
第四章 网络层 电信网使用面向连接的通信方式,使电信网络能够向用户提供可靠传输的服务. 互联网设计思路:网络层向上只提供简单灵活的.无连接的.尽最大努力交付的数据报(分组)服务. 网络层不提供可靠传输 ...
- 16进制string转成int
http://blog.csdn.net/wl1524520/article/details/25706521