简便方法搞定第三方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中的引入的更多相关文章

  1. maven 打包含有第三方依赖的 jar 包

    maven 打包含有第三方依赖的 jar 包:mvn assembly:assembly

  2. 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。

    Eclipse中导入外部jar包 在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可. 工具/原料 Eclipse 需要 ...

  3. Android studio module生成jar包,module中引用的第三方库没有被引用,导致java.lang.NoClassDefFoundError错误。

    android studio 创建了一个Module生成jar包,这个module中有引用一些第三方的类库,比如 gson,volley等. 但是生成的jar包里,并没有将gson,volley等第三 ...

  4. IDEA中如何导入jar包、IDEA中找不到对应类改怎样解决?(详细图解过程)

    今天突然心血来潮.用IDEA运行之前用eclipse编写的项目.发现遇到了一些bug,现在习惯了使用maven管理项目的依赖.一时间忘记了怎样将jar包导入项目中.特此记录一下 文章目录 1.未加入j ...

  5. java jar包解析:打包文件,引入文件

    java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...

  6. IDEA 热部署 + 下载jar包放到maven中

    IDEA 热部署: 1 :  POM中加入devtools的依赖,就可以实现热部署 <dependency> <groupId>org.springframework.boot ...

  7. iOS之下拉放大,上推缩小,一个方法搞定

    先来看看效果吧. 讲讲大概的实现思路:1、创建头部的视图和tableview,需要注意的是tableview要设置contentInset,contentInsent 的顶部要和头部视图的背景图的高度 ...

  8. 将main方法打成jar包,并引用第三方的maven jar包

    一.准备工作.执行命令 学习插件: 学习apache的打包插件maven-assembly-plugin:http://maven.apache.org/plugins/maven-assembly- ...

  9. Android 第三方库导致jar包冲突解决办法

    这几天的任务是将mapbox的工程合到程序中去,但是合并过程却出现了问题 合并方法: 在app的build.gradle中添加 dependencies { compile ('com.mapbox. ...

随机推荐

  1. oozie错误:javax.servlet.jsp.el.ELException: variable [***] cannot be resolved

    完整错误: javax.servlet.jsp.el.ELException: variable [compute] cannot be resolved at org.apache.oozie.ut ...

  2. linux 配置Tomcat开机启动

    一台安装有tomcat的linux服务器 方法/步骤   1 请自行下载安装配置tomcat的服务器环境 本经验仅仅介绍如何配置tomcat的开机自动启动 2 切换到tomcat/bin目录下 用vi ...

  3. Java对称与非对称加密解密,AES与RSA

    加密技术可以分为对称与非对称两种. 对称加密,解密,即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,AES等 而非对称技术,加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等 为什么 ...

  4. Python的logging,记录log的包

    最近在做自动化测试时,想给他加上日志,所以用到logging的模块,以下是python增加log的几种方式 一.python代码配置方式(当然还有一种是可以多模块通用的一个python代码设置,这个网 ...

  5. DFT

    离散傅里叶变换(Discrete Fourier Transform,缩写为DFT),是傅里叶变换在时域和频域上都呈离散的形式, 将信号的时域采样变换为其DTFT的频域采样.在形式上,变换两端(时域和 ...

  6. Py2exe——将python程序变成windows下可执行的exe

    一.安装Py2exe 二.定义一个目录,把你的Python文件放在下面,如为AddFileRandom.py文件 然后新建一个go.py文件,放于相同目录下,内容为: from distutils.c ...

  7. 在Objc项目中调用Swift

    之前的文字中记录了在Swift项目中调用OC的相关代码,比较简单直接 传送门 但是在OC中调用swift代码则不是那么的和谐,网络上很多文章业已经有点陈旧.记录步骤如下: 1.创建OC项目 (1)启动 ...

  8. JTSL/EL Expression学习

    最早的一个学习笔记,时间过去了久了,供java web初学者参考. JTSL/EL Expression学习安排 学习目标:掌握几个常见标签的使用,通晓工作原理,详细到代码层面,遇到问题时能查得出异常 ...

  9. Gitlab不小心关闭了sign-in,无法登录web的坑。。。

    手贱一不小心用root在gitlab后台把登录功能给关了,当时我就懵逼了. 解决方法如下: #进入数据库修改配置[root@gitlab-server ~]# gitlab-psql gitlabhq ...

  10. 2018.09.30 bzoj2741: 【FOTILE模拟赛】L(分块+可持久化01trie)

    传送门 数据结构经典题. 首先考虑另外一种询问方式. 已知权值val,在区间[1,n][1,n][1,n]中找一个数使得valvalval^a[i]a[i]a[i]最大. 这个可以直接01trie. ...