DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 28
在线用户: 17
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bpearl (bpearl) ▲▲▲▲△ -
普通会员
2014/1/10 11:40:32
标题:
XE5在Android中引用第三方jar的SDK的相关文章分享(截止目前2014-01-10) 浏览:3264
加入我的收藏
楼主: 首先声明,我还没有完全实现彻底的实例使用,实现调用但还是有碰到新问题,不过,这条实现路径的趋势已经很好了。

因此,贴一些已经完成的步骤所对应的文章,以便更多的朋友能参与探讨,解决问题。

先学习了Paul Foster的文章“Fun with external Java libraries”,英文不好,理解比较费劲。
并且,实验内嵌apk来调里面的类,成功;但实验内嵌jar来调里面的类,不成功。
文章网址:http://www.pclviewer.com/android/XE5.pdf

然后找到了这篇文章——“XE5 JNI starter kit - access JAVA CLASS from DELPHI FM XE5”,带一些图片的演示,比较容易理解了。
文章网址:http://www.pclviewer.com/android/androidJNI.html

截止目前,摸索到了可以把第三方jar包打入一个什么都不干的apk中(它可以是没有主界面的apk,用eclipse做的),然后在Delphi XE5的android程序内deploy到自己的目录下,供文章中的方法调用。

请用这条路成功应用的朋友们,也分享一下啊。
(我想实现的jar引入,主要有:阿里云的OSS SDK、JPush的消息推送SDK、微信的内容转发SDK等)

附:
如何在eclipse把第三方jar包、so包编译到一个apk中,请看这里:
http://blog.csdn.net/thl789/article/details/7918093
http://www.th7.cn/Program/Android/201304/133264.shtml
----------------------------------------------
丢了编码快10年,现在重新捡起来!
作者:
男 pcspace (庸人) ★☆☆☆☆ -
盒子活跃会员
2014/1/10 11:52:17
1楼: Mark
----------------------------------------------
-
作者:
男 shileizi (sl) ★☆☆☆☆ -
普通会员
2014/1/10 13:41:42
2楼:  mark
----------------------------------------------
-
作者:
男 msfm (清洁工) ★☆☆☆☆ -
盒子活跃会员
2014/1/10 13:48:39
3楼: mark
----------------------------------------------
-
作者:
男 nihaongy (nihao) ★☆☆☆☆ -
普通会员
2014/1/10 14:14:27
4楼: thx mark
----------------------------------------------
-相互学习,共同进步! 努力每一天,不能望山跑死马
发上等愿,结中等缘,享下等福;择高处立,寻平处住,向宽处行
作者:
男 1314tim (五毒公主) ★☆☆☆☆ -
普通会员
2014/1/13 9:36:51
5楼: mark
----------------------------------------------
五毒公主 认准了delphi ,没经历学更多 就努力成功delphi高手吧
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2014/1/14 10:45:58
6楼: 第三方 JNI SDK 调用开发


(* ********** *)
(*          *)
(*              编写:爱吃猪头肉 & Flying Wang             *)
(*               上面的版权声明请不要移除。        *)
(*          *)
(* ********** *)


请大家从群共享下载(① FireMonkey[DELPHI XE5]  165232328)
java 文件 Classes.DEX 合并.zip
里头的
BuildDex.bat.utf8.txt
就是我们要讨论的重点。


我发现现在的 第三方 SDK 分 3 种。
1. HTTP 类的。webservice rest 等。用  INDY 控件 或 webservice rest 控件即可。
2. NDK SO 类的。大家看看 Androidapi.inc 和 Androidapi.NativeWindowJni 的内容,大家就知道如何调用了。EMB 代码中还有其他 SO 的。简单的说和 调用 DLL 差不多,就是不能 LoadLibrary。要静态定义接口。
3. JNI SO 类的。这种接口,给您 SO 的同时。会给您一些 JAVA 文件。

其中第 3 种里头还分 2 种。
3.1 JAVA 文件只有一个,就是 SO 文件的接口。
3.2 JAVA 文件很多,是对 SO 文件的再次封装。

我目前只知道 3.1 类型的做法。

先将 SO 文件发布到工程中。
打开工程后。
Project -> Deployment
打开的界面中
选择 configuration
选到 All configurations - All platforms 或者 All configurations - xxx platform。
在这个状态下 增加 或 删除 文件。
选择 新增 按钮,将 SO 文件加入。 然后编辑 RemotePath 列。路径是 \lib\armeabi ,就是和您的工程生成的 SO 文件放同一个目录。


然后 将 SDK 中的 JAVA 接口文件 带上路径 放入 SRC 目录。当然之前 SRC 里的文件目录都删了吧。
修改 BuildDex.bat 。
将里头的 JAVA 路径修改成您现在的路径。

顺便修改 BAT 中的各种路径定义。确保路径是正确的。

然后运行 BuildDex.bat 。

这样您就得到了带有 SDK 的 DEX 文件了。

这次您需要将 classes.dex 的发布修改下。不再从 EMB 的安装目录找这个文件,而是使用这个新生成的文件。

最后,您按照 群共享的文档 JNI 翻译 转 Delphi 的 经验 方法.txt 里头的说明,将您的 JAVA 接口文件翻译成对应的 JNI PAS 文件。

对于 3.2 类型的 SDK。
目前只能猜想
1. 直接将 JAR 和 DEX 合并,翻译 JAR 中的 大部分或者是有 JAVA 接口文件。
2. 想办法将 SDK 中的 JAVA 文件和 JAR 都和 DEX 合并。但是接口文件好像还是需要翻译的。


再补充点:
classes.dex 可以多次合并的。如果您有多个 SDK ,可以都合并进去。



下面是本群的一些参考文件

JNI 翻译 转 Delphi 的 经验 方法
JarToDex批处理运行不了错误解决
----------------------------------------------
(C)(P)Flying Wang
作者:
男 liumazi (刘麻子) ★☆☆☆☆ -
大善人会员
2014/4/4 13:22:45
7楼: jar好像是加载不了

load时总报错:

java.lang.ClassNotFoundException: 

com.dynamic.DynamicTest in loader

dalvik.system.
----------------------------------------------
好好学习,天天上网。
作者:
男 liumazi (刘麻子) ★☆☆☆☆ -
大善人会员
2014/4/4 13:26:31
8楼: Jar 已经用 dx.bat 处理过
在 Java版Android程序中可正常的 动态加载该 Jar
而同样的加载代码用Delphi写一遍就不行了
----------------------------------------------
好好学习,天天上网。
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2014/4/4 13:55:48
9楼: 楼上的你 CLASSES.DEX 没发布吧。反正就是你操作没做好。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 liumazi (刘麻子) ★☆☆☆☆ -
大善人会员
2014/4/8 17:26:52
10楼: 应该没做错 后来用合并dex的方式成功了
----------------------------------------------
好好学习,天天上网。
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2014/4/8 17:28:39
11楼: 楼上的,楼主就是合并啊。您这成功和失败,都很含糊啊。
----------------------------------------------
(C)(P)Flying Wang
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS