请选择 进入手机版 | 继续访问电脑版

XXTouch 论坛

 找回密码
 立即注册
搜索
查看: 568|回复: 40

[测试性特性] app.eval 相关资料(运行 OC 或 C,需要 ffi 基础)

[复制链接]

48

主题

100

帖子

947

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
947
发表于 2017-12-21 01:40:17 | 显示全部楼层 |阅读模式
从 1.1.3-1 版开始,XXTouch 就内置了一个可以在其它进程运行一段 LuaJIT 代码的函数 app.eval,该特性一直处于测试阶段,或许永远也没有正式版,鉴于有人需要,我发一些资料。注意,它不是一个容易掌控的功能,使用不当会给系统带来不稳定。
  1. XXTLuaOCBridge 规则

  2. objc.class  用于将一个字符串以名字形式包装成一个类对象
  3. 例如:
  4.     NSString = objc.class.NSString
  5.     NSNumber = objc.class.NSNumber

  6. objc.object 用于包装一个指针(userdata、整数)成一个对象
  7. 例如:
  8.     objc.object(0x113673791)

  9. 方法构造用 . 语法分段构造一个 selector,不要写冒号
  10. 例如:
  11.     av.initWithTitle({'@','提示'}).message(    NSString.stringWithUTF8String("已经切换到摇一摇界面,现在立刻摇")()    ).delegate(nil).cancelButtonTitle('OK').otherButtonTitles(0)()
  12. 相当于 objc 中的
  13.     [av initWithTitle:@"提示" message:[NSString stringWithUTF8String:"已经切换到摇一摇界面,现在立刻摇"] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

  14. 所有对象的方法调用最后都是一对空括号 ()
  15. 如果有参数,那么需要额外再写一对儿括号
  16. 例如:
  17.     object.release()
  18.     object1.isEqual(object2)() --<------ 注意这里有一对空括号

  19. NSString、NSData、NSNumber 类型参数可以使用字面量方式定义
  20. 例如:
  21.     {"@", "哈哈哈"}      对应 @"哈哈哈"
  22.      "哈哈哈"            对应 @"哈哈哈"
  23.     {"@data", "哈哈哈"}  对应 [NSData dataWithBytes:"哈哈哈" length:strlen("哈哈哈")];
  24.     {"@", 2234}          对应 @(2234)

  25. CGRect、CGSize、CGPoint、CGAffineTransform、NSRange、UIEdgeInsets 这几种结构体类型参数支持字面量定义
  26. 例如:
  27.     CGRect 结构:
  28.         {x = 100, y = 100, width = 100, height = 100}
  29.     CGSize 结构:
  30.         {width = 100, height = 100}
  31.     CGPoint 结构:
  32.         {x = 100, y = 100}
  33.     CGAffineTransform 结构:
  34.         {a = 1, b = 1, c = 1, d = 1, tx = 1, ty = 1}
  35.     NSRange 结构:
  36.         {location = 1, length = 10}
  37.     UIEdgeInsets 结构:
  38.         {top = 1, left = 1, bottom = 99, right = 99}

  39. 其他类型结构体自行用 ffi 接口创建
复制代码

以下是一个在微信中跳转到摇一摇界面并摇一摇的例子
  1. local remoteCode = {
  2. bid = "com.tencent.xin",
  3. lua = [==[

  4. NSString = NSString or objc.class.NSString

  5. str = NSString.stringWithUTF8String('hello')()
  6. range = str.rangeOfString("ll")()

  7. alert(string.format("%d, %d", range.location, range.length))

  8. dispatch_sync(dispatch_get_main_queue(), function()
  9.     appvcMgr = objc.class.CAppViewControllerManager.getAppViewControllerManager()
  10.     appvcMgr.jumpToShake()
  11. end)

  12. local function tryShake()
  13.     dispatch_after(500, dispatch_get_main_queue(), function()
  14.         topVC = appvcMgr.getTopViewController()

  15.         if topVC.isKindOfClass(objc.class.ShakeViewController)() then
  16.             av = objc.class.UIAlertView.alloc()
  17.             av = av.initWithTitle({'@','提示'}).message(NSString.stringWithUTF8String("已经切换到摇一摇界面,现在立刻摇")()).delegate(0).cancelButtonTitle('OK').otherButtonTitles(0)()
  18.             av.show()
  19.             av.release()
  20.             topVC.OnShake()
  21.             dispatch_async(dispatch_get_work_queue(), function()
  22.                 proc_put('摇一摇已完成', "1") -- 发送通知回脚本进程
  23.             end)
  24.         else
  25.             dispatch_after(500, dispatch_get_main_queue(), tryShake)
  26.         end
  27.     end)
  28. end

  29. tryShake()

  30. ]==]}
复制代码

如遇到 App 启动后第一次调用无效,对 App 运行一次 app.eval{lua=''} 延迟一下再调用即可

一些使用 app.eval 实现的成品模块列表:
《[模块] WCH 微信快捷操作模块》
《[模块] alerthelper 弹窗助手(快速处理系统弹窗)》
《[模块] VPNCONF 快速设置 VPN 模块》


下面是更多源码例子,下载看看,能理解多少就理解多少吧
游客,如果您要查看本帖隐藏内容请回复


然后分享一个额外的资源,一个国外的 LuaJIT 的 OC Bind 库,完善程度较高
游客,如果您要查看本帖隐藏内容请回复






回复

使用道具 举报

1

主题

18

帖子

142

积分

小码

Rank: 2

积分
142
发表于 2017-12-21 03:41:30 | 显示全部楼层
6666666666666666
回复

使用道具 举报

0

主题

9

帖子

48

积分

光头

Rank: 1

积分
48
发表于 2017-12-21 15:18:00 | 显示全部楼层
val 相关资料(运行 OC 或
回复

使用道具 举报

0

主题

2

帖子

18

积分

光头

Rank: 1

积分
18
发表于 2017-12-21 16:21:15 | 显示全部楼层
我看看我看看我看看
回复

使用道具 举报

1

主题

17

帖子

124

积分

小码

Rank: 2

积分
124
发表于 2017-12-22 01:16:13 | 显示全部楼层
支持 苏总 支持XXT
回复

使用道具 举报

0

主题

3

帖子

10

积分

光头

Rank: 1

积分
10
发表于 2017-12-22 09:23:55 | 显示全部楼层
看看苏大发的好东西~~~~~~~~~
回复

使用道具 举报

4

主题

13

帖子

112

积分

小码

Rank: 2

积分
112
发表于 2017-12-23 18:53:36 | 显示全部楼层
6666666666
回复

使用道具 举报

0

主题

4

帖子

1031

积分

码总

Rank: 6Rank: 6

积分
1031
QQ
发表于 2017-12-26 17:29:42 | 显示全部楼层
dddddddddddddddddddddddddddddddddddddddddddddddd
回复

使用道具 举报

0

主题

1

帖子

30

积分

光头

Rank: 1

积分
30
发表于 2017-12-28 22:16:19 | 显示全部楼层
支持 苏总 支持XXT
回复

使用道具 举报

0

主题

9

帖子

60

积分

小码

Rank: 2

积分
60
发表于 2018-1-1 12:25:56 | 显示全部楼层
感谢分享啊
回复

使用道具 举报

0

主题

12

帖子

97

积分

小码

Rank: 2

积分
97
发表于 2018-1-2 02:36:29 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复

使用道具 举报

0

主题

5

帖子

36

积分

光头

Rank: 1

积分
36
发表于 2018-1-2 18:02:11 | 显示全部楼层
赞啊赞啊赞啊赞啊赞啊
回复

使用道具 举报

48

主题

100

帖子

947

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
947
 楼主| 发表于 2018-1-3 00:08:27 | 显示全部楼层
其他
回复

使用道具 举报

0

主题

1

帖子

203

积分

码工

Rank: 3Rank: 3

积分
203
发表于 2018-1-3 00:20:15 | 显示全部楼层
其他其他其他其他其他其他其他其他其他其他其他其他其他其他其他
回复

使用道具 举报

1

主题

8

帖子

419

积分

码工

Rank: 3Rank: 3

积分
419
发表于 2018-1-3 13:43:15 | 显示全部楼层
66666666666666666
回复

使用道具 举报

0

主题

8

帖子

60

积分

小码

Rank: 2

积分
60
发表于 2018-1-3 22:18:03 | 显示全部楼层
支持支持顶顶顶
回复

使用道具 举报

0

主题

3

帖子

34

积分

光头

Rank: 1

积分
34
发表于 2018-1-4 09:29:51 | 显示全部楼层
学习666666
回复

使用道具 举报

0

主题

8

帖子

56

积分

小码

Rank: 2

积分
56
发表于 2018-1-4 15:32:15 | 显示全部楼层
等了好久终于等到今天
回复

使用道具 举报

0

主题

9

帖子

60

积分

小码

Rank: 2

积分
60
发表于 2018-1-5 07:03:09 来自手机 | 显示全部楼层
6666666666666666
回复

使用道具 举报

0

主题

9

帖子

140

积分

小码

Rank: 2

积分
140
发表于 2018-1-5 15:58:07 | 显示全部楼层
0.0必须看看啊啊  很强大
回复

使用道具 举报

0

主题

5

帖子

60

积分

小码

Rank: 2

积分
60
QQ
发表于 2018-1-5 16:04:45 | 显示全部楼层
支持苏大!!!!!!!!!我是脑残粉
回复

使用道具 举报

0

主题

1

帖子

16

积分

光头

Rank: 1

积分
16
发表于 2018-1-8 10:44:05 | 显示全部楼层
看看111111111111111111
回复

使用道具 举报

0

主题

5

帖子

38

积分

光头

Rank: 1

积分
38
发表于 2018-1-8 20:46:11 | 显示全部楼层
dnnksdfdksnffndsnmfldsfsdfsdfsdf
回复

使用道具 举报

0

主题

5

帖子

26

积分

光头

Rank: 1

积分
26
发表于 2018-1-9 18:45:17 | 显示全部楼层
非常好,一定要看看
回复

使用道具 举报

0

主题

2

帖子

6

积分

光头

Rank: 1

积分
6
发表于 2018-1-10 10:54:22 | 显示全部楼层
回复

使用道具 举报

0

主题

6

帖子

78

积分

小码

Rank: 2

积分
78
发表于 2018-1-13 03:33:07 | 显示全部楼层
看看看啊                              
回复

使用道具 举报

7

主题

27

帖子

1584

积分

码总

Rank: 6Rank: 6

积分
1584
QQ
发表于 2018-1-20 16:03:35 | 显示全部楼层
学习一下
回复

使用道具 举报

0

主题

14

帖子

74

积分

小码

Rank: 2

积分
74
发表于 2018-1-20 21:40:21 | 显示全部楼层
学习学习
回复

使用道具 举报

0

主题

5

帖子

34

积分

光头

Rank: 1

积分
34
发表于 2018-1-21 14:27:00 | 显示全部楼层
app.eval 相关资料
回复

使用道具 举报

0

主题

4

帖子

14

积分

光头

Rank: 1

积分
14
发表于 2018-1-26 13:14:42 | 显示全部楼层
学习学习来咯。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|关于我们|XXTouch Inc. ( 湘ICP备15002722号-2 )

GMT+8, 2018-2-23 10:50

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表