之前就说这个版本会解决可以加载远程的含有代码的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文件的更多相关文章

  1. springMVC加载远程freemarker模板文件

    在一个大网站里,有很多子域名,也就是有很多子系统,这些子系统由不同的团队负责,对整个网站的风格的风格至少得要是一致的(最基本的页头.页尾必须一致),这个时候得提供一份统一的页头.页尾以及公共的JS.c ...

  2. XSS漏洞之加载远程js文件

    这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...

  3. jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

    jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...

  4. iOS Cordova 加载远程界面

    老大说,我们的项目要hybrid,要实现1.html能调用native:2.本地html调用本地html界面:3.能加载远程界面..... 因为我的项目是已有的(以下简称 项目),所以是要在已有的项目 ...

  5. xss如何加载远程js的一些tips

    在早期 , 对于xss我们是这样利用的 <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.cookie)</ ...

  6. xss 加载远程第三方JS

    script 没有调用远程平台,用web接收cookie <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.coo ...

  7. ExtJS ComboBox同时加载远程和本地数据

    ExtJS ComboBox同时加载远程和本地数据 原文:http://gblog.hbcf.net/index.php/archives/233 ComboBox比较特殊需求,将远程数据和本地数据同 ...

  8. iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件

    NSURLSession加载数据.下载.上传文件   NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍.   1,使用Data Task加载数据 使用全局的 ...

  9. webpack加载多级依赖时css、html文件不能正确resolve的问题

    在使用webpack+avalon以及avalon的mmRouter做SPA的时候,碰到一个困扰数周的问题:webpack加载多级依赖时出现了css文件和模板(html)文件不能正确resolve.原 ...

随机推荐

  1. Flash制作和软件使用

    Flash制作和软件使用 2014-11-09 ——君子善假于物也 引子 虽说FLASH在随着HTML5的发展而受阻,尤其移动终端都不再支持它了,但是在一段时间内还是重要的.近期朋友说要结婚,想弄个电 ...

  2. 深入Garbage First垃圾收集器(三)G1中的垃圾收集

    G1 GC在收集暂停的过程中会回收绝大部分堆分区,唯一的例外是多级并发标记期间的清除阶段. 在清除阶段,如果G1遇到仅仅只存放了垃圾的分区,它就会立刻收集这些分区并将它们放回空闲分区列表中,因此这些分 ...

  3. Eclipse-----Eclipse断点调试

  4. error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

    1 这个error是什么原因造成的 cmake默认选择的是x86,即32位的生成子. 2 怎么解决这个error 在cmake ..的时候,在后面加上“-G "Visual Studio 1 ...

  5. mysql-test-run.pl

    wget https://raw.githubusercontent.com/mysql/mysql-server/5.7/mysql-test/mysql-test-run.pl

  6. Hadoop集群搭建-Hadoop2.8.0安装(三)

    一.准备安装介质 a).hadoop-2.8.0.tar b).jdk-7u71-linux-x64.tar 二.节点部署图 三.安装步骤 环境介绍: 主服务器ip:192.168.80.128(ma ...

  7. The Little Match Girl,摘自iOS应用Snow White and more stories

    Many years ago on a cold and snowy New Year's Eve, a poor little girl was wandering arround on the s ...

  8. 初学php html javascript后小总结

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/c3568/article/details/30474015 转载请注明出处:http://blog. ...

  9. SpringBoot-(4)-Filter的使用

    一,Filter Filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到 ...

  10. VVDocument+Appledoc生成文档

    在写代码的时候写上适当的注释是一种良好的习惯,方便自己或者别人阅读的方便. **VVDocument**:(Github地址:[VVDocument](https://github.com/onevc ...