DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: xieqiongxi1
今日帖子: 0
在线用户: 0
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 nick1980 (nick1980) ▲▲▲△△ -
普通会员
2018/3/10 15:47:13
标题:
在android studio 中调用 delphixe10写的 so库 浏览:1180
加入我的收藏
楼主: 小弟成心请教各位高人,如何在android studio中调用 
delphi xe10 上写的 TAndroidService里面的某个方法,或都窗体?
不胜感激
----------------------------------------------
-
作者:
男 nick1980 (nick1980) ▲▲▲△△ -
普通会员
2018/3/10 15:52:31
1楼: 当然不一定是要 TAndroidService  ,
也可以是delphi 写一个so文件,里面有个窗口,
但是怎么样在android studio里面调用这个窗口呢?
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/3/10 22:54:34
2楼: 你先告诉我 delphi 的 动态库 工程,怎么支持 安卓平台吧。

我新建一个 动态库,只支持 WIN MACOS LINUX  这 3个。没安卓啊。
而且 跨平台的 动态库 没 UI 的。不能出现 窗体。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 nick1980 (nick1980) ▲▲▲△△ -
普通会员
2018/3/10 23:03:05
3楼: wang_80919 兄弟
但是,这个TAndroidService编译出来的是SO格式的,那么肯定是要第三方来调用的
如果不能有UI,那么怎么样调用其中的方法呢?
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/3/10 23:22:18
3楼: 给你一个失败的案例。

RAD10 新建 dll so 动态库 win 安卓 fmx 动态调用 教程 V1.0.2015.1031
http://www.2pascal.com/forum.php?mod=viewthread&tid=3004&fromuid=4
(出处: 2Pascal-新时代的Pascal)
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/3/10 23:25:05
4楼: TAndroidService 从来就没说支持 UI 啊。
没有 UI 难道就不能调用了?
人家 叫 安卓服务。服务都不懂吗?
而且,网上一堆的 安卓服务 DEMO。
EMB 的 只不过是 封装了接口,换 DELPHI 去实现服务的具体功能而已。
所以 安卓服务 怎么用 怎么写,都和 网上的 DEMO 没什么区别。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 nick1980 (nick1980) ▲▲▲△△ -
普通会员
2018/3/11 8:54:50
5楼: TO  飞汪

1.你在XE里新建一个Package , 然后在右边 Target Platforms里可以建立一个 for Android 平台输出类型

2. 有人在android 成功 Delphi调用Android的.so文件
 https://zhidao.baidu.com/question/1860759219961110107.html

3.我想讨论的是如何在Android Studio里调用这个Delphi写的SO,当然,Delphi 写的TAndroid Service肯定 是可以的。

if not Tfile.Exists(TPath.GetDocumentsPath+'/libserial_port.so') then
  begin
    showmessage(TPath.GetDocumentsPath+'/libserial_port.so  not found');
  end;
  Handle1:=LoadLibrary(pchar(TPath.GetDocumentsPath+'/libserial_port.so'));//动态装入库
if Handle1<>0 then //找到库
begin
    fun1:=GetProcAddress(Handle1,'openport');
//搜索库函数Add,并返回函数指针
if Assigned(fun1) then
    begin
......
复制代码


至于上面的GetDocumentsPath 或者别的目录也可以 参看TPath的说明和so文件存放目录有关系

另外值得注意的事传递的字符串  xe中是双字节的。
----------------------------------------------
-
作者:
男 nick1980 (nick1980) ▲▲▲△△ -
普通会员
2018/3/11 8:58:51
6楼: 当然,如果delphi写的SO,全世界都能调用,那是真的强~!
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/3/11 8:59:53
6楼: 老子,代码都公开了,你还问个屁。

5 楼的,你语文是体育老师教的吗?

你给的知道的标题你是不是看不懂?


昨天测试了代码 2年多过去了。
依然 TEncoding.ANSI UTF8 不能用。
最基础的 字符串 编码转换都无法简单的进行。不具备实用价值。
当然,如果你打算绕过所有的坑,那么 跨平台的 dll 是没问题的,让别的语言调用,也是没问题的。
例如 只做 底层的 运算 或 数据处理,不处理任何 string (PAnsiChar 等不能用),更不考虑 UI。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2018/3/11 9:31:52
7楼: 问题来了,既然已经用AS开发了,为什么还要考虑delphi写的so.多此一举吧。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行60.54688毫秒 RSS