【ANE】通过接入华为Intouch疏通依赖包的流程。
还是那句话,ANE接入不难,但是打包ANE难。这个ANE 也算是自己第一个接入的三方ANE。虽然前面有几篇ANE的文章,但这篇因为时间 迟迟没发,期间遇到的困难 也多不过最后还是通过度娘给解决了。华为Intouch 总共耗时3天。时间挺长 不过后面的ANE 很快 哈哈 开心
关于ANE是干什么用的,相信找到这篇文章的人是知道的。说实在的,在我们接入三方SDK
的ANE时,其实最麻烦,最关键的不是写代码而是打包。代码其实很简单,直接复制三方SDK Demo里面的函数方法 然后稍加整理即可。如果基本的ANE制作不会的参看下面的教程。
闲话少说,进入正题。
制作工具:
Flash Builder4.7
Eclipse ADT
素材:
华为Intouch SDK 一份
如上图 拿到这个的时候里面除去一些必要的 非必要的说明文件,指导文件以外发现有两个Android 项目工程。一个是DEMO 里面包含我们要复制的代码,一个是SDK依赖库。库里面有一些Jar文件。了解这些后,将这两个项目导入到eclipse 中去。为了保险起见,首先可以运行一下DEMO,发现没有问题。好了 接下来进入ANE的制作。
由于我们的ANE其实也是代码库,所以在这里我们要创建一个库。
啰嗦一下创建过程
File – Android Application Project
按照自己喜好填写,接着next
把上面红框中的两个勾给去掉,因为我们要做的库 有些界面的东西用不着 然后finish
完成创建后,右键项目选择properties 点开Android选项卡
如图所示,默认状态下是这样的,然后点击右侧的Add按钮 打开依赖库界面 这里最好将依赖包 和自己的ANE项目 放在同一个非汉字路径下面
如果之前将SDK项目导入进来了的话 在这里面 就能看到,如果看不到 那再导入。然后选择咱们需要的SDK项目 Ok;
接着勾选上 Is Library 最后的界面如下所示。接着OK
然后给SDK项目 我们创建的项目Build一下 那么能看到的列表大概是下面这样,如果bin里面没有jar 那么clear一下也行。
上图中 红色框框里面的东西是我们打包所需要的。不能缺 下面进行打包操作
首先是文件结构
如图 解释下
Android-ARM 文件夹里面需要包含打包安卓ANE所需的一些材料 涉及的文件有 extension.xml platform.xml 以及打包命令
adt.jar 打包工具,可以在flash builder安装目录下找到(Adobe Flash Builder 4.7 (64 Bit)\eclipse\plugins\com.adobe.flash.compiler_4.7.0.349722\AIRSDK\lib)也有直接调用安装目录下的bat文件进行打包。效果一样。
Extension.xml 扩展配置文件。我的是这样的
<?xml version=”1.0″ encoding=”UTF-8″?>
<extension xmlns=”http://ns.adobe.com/air/extension/16.0″>
<id>com.xmooon.aneCode.XMExtension</id>
<versionNumber>1.0.0</versionNumber>
<platforms>
<platform name=”Android-ARM”>
<applicationDeployment>
<nativeLibrary>itouchane.jar</nativeLibrary>
<initializer>com.xmooon.aneCode.XMExtension</initializer>
</applicationDeployment>
</platform>
</platforms>
</extension>
Intouch.swc 这个不多说,自己在fb里面写的AS代码库
Platform.xml 平台配置,对于AIR4.0以后的打包。可以直接通过platform.xml来合并第三方jar。 我的是这样的
<platform xmlns=”http://ns.adobe.com/air/extension/16.0″>
<description>An optional description.</description>
<copyright>2011 (optional)</copyright>
<packagedDependencies>
<packagedDependency>gamesdk_static_v1.1.jar</packagedDependency>
<packagedDependency>KjavaAbility0419.jar</packagedDependency>
<packagedDependency>libGoogleAnalyticsServices.jar</packagedDependency>
<packagedDependency>tantalumCore0422.jar</packagedDependency>
<packagedDependency>gamesdk_libproject.jar</packagedDependency>
</packagedDependencies>
<packagedResources>
<packagedResource>
<packageName>com.nd.commplatform</packageName>
<folderName>intouch-res</folderName>
</packagedResource>
</packagedResources>
</platform>
packagedDependency 里面是除去我们自己创建的安卓库项目 生成的jar包以外的所有包。
packagedResource 里面包含的是SDK所用到的资源 packageName 可以在gen里面获取到
folderName 就是项目里面的res可以全部复制
Android-ARM文件夹的结构如下
红色框里面的是 SDK自身所需要导入的三方jar包,以及so文件。注意上面的libs文件夹。他和项目里面的libs存放东西类似。只是把项目libs里面的所有jar给提到外面来了,而里面的so文件则不动
绿色框里面的是构建SDK项目所生成的jar
蓝色框里面的是我们自己创建的库 生成的jar 直接到bin下面取即可 没有的 就build 或者clear
Swf文件 是解压swc所得到的。
打包命令如下
java -jar adt.jar -package -target ane com.xooom.intouch.ane extension.xml -swc Intouch.swc -platform Android-ARM -platformoptions platform.xml -C Android-ARM .
最后就是 根据manifest的配置 然后导入ANE测试即可
PS:几乎所有的都会提供DEMO 所以我们只需要 复制DEMO里面的代码 DEMO里面的.xml配置就可以了