首页
社区
课程
招聘
[原创][已开源] 一步一步编写Safari插件xImage到发布
发表于: 2013-5-27 10:35 18571

[原创][已开源] 一步一步编写Safari插件xImage到发布

2013-5-27 10:35
18571

源码地址:
https://github.com/noolua/xImage

需求设计阶段
自从有了iPad,晚上很少使用电脑了,使用safari浏览网页的时候,发现safari自带的reader模式做得很好,非常适合阅读浏览,为此产生一个能否将reader中的内容转为图片发送到微博,分享给好友或者粉丝的想法.



准备阶段
设备与环境
  参考帖子 http://bbs.pediy.com/showthread.php?t=166009

补充安装cycript(iOS设备下)
    cydia中安装
补充安装iOSOpenDev(mac设备下)
    iOSOpenDev https://iosopendev.googlecode.com/files/iOSOpenDev-1.5.pkg
    在安装iOSOpenDev过程中如果遇到问题,请在安装界面按cmd+L查看all,获得失败信息
    我这里遇到的是xcode 证书问题,在bash中处理一下就好
iosod sshkey -h [iOS_device_IP]

分析阶段
将ios中的safari拷贝到mac下
使用class-dump-z 导出class的定义
使用ida6.4分析mobilesafari
分析得出BrowserController TabDocument等class在这个插件中开发有用
进一步分析最终得出在ActionPanelActivityItemsSource的_customActivities方法下安装hook
即可满足设计需求

为了验证可行性,使用cycript进行可行性测试 (命令 cycript  -p 进程号)
代码如下

function snap_view()
{
var browser = [BrowserController sharedBrowserController];
var tab = [browser tabController];
var doc = [tab activeTabDocument];
var view = [doc frontView];
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
var img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
var data = UIImagePNGRepresentation(img);
var ok = [data writeToFile:@"/var/tmp/out.png" atomically:NO];
return ok;
}
snap_view();

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (4)
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持一下技术贴,

好贴自然会被转,不用楼主讲这么多

另外, opera一出,神马都是浮云!
2013-5-27 11:00
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好贴,学习,顺便希望能尽快开源学习一下
2013-9-10 14:38
0
雪    币: 280
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
已开源,地址在一楼
2013-9-30 09:28
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
收藏了先,以备日后学习用
2013-9-30 20:57
0
游客
登录 | 注册 方可回帖
返回
//