在AIR4.0版本之前,ANE内无法使用R*,操作资源仅能使用getResourceID(). 对于接SDK来说尤为头疼.
不过4.0以后可以通过在打包时候指定platform.xml来直接使用R*访问资源
棒子的一个视频
其中需要注意的两点
1` Android项目工程要设置为Library
2` 打出的Jar包删除R*相关的Class 一键脚本参见: ANE 从入门到精通 --- 一键打包ANE
实战一下:
Step1 创建一个Android项目,注意选择Application,不要选择Library 因为Library不生成相应的文件结构和AndroidManifest.xml
Step2 更改项目为Library
Step3 新增或者更改 一个Fun,使其通过R*访问一个资源 ,这里访问的是 R.string.hello
package com.testzone.t2; import android.content.Intent; import android.widget.Toast; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; import com.adobe.fre.FREObject; public class T1ANEFun implements FREFunction { @Override public FREObject call(FREContext freContext, FREObject[] freObjects) { Toast.makeText(freContext.getActivity(), "call t1", Toast.LENGTH_SHORT).show(); try { String hello = freContext.getActivity().getString(R.string.hello); Toast.makeText(freContext.getActivity(), "Hello is : " + hello, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(freContext.getActivity(), "Error is : " + e.toString(), Toast.LENGTH_SHORT).show(); }return null; } }
Step4 编译打出Jar包
该操作参见 ANE 从入门到精通 --- 简单的Whatever
Step5 删除Jar包中所有关于R*的部分
Step6 将Jar包拷贝到 ANE生成目录
Step7 ANE生成目录下创建platform.xml
<platform xmlns="http://ns.adobe.com/air/extension/19.0"> <packagedResources> <packagedResource> <packageName>com.testzone.t2</packageName> <folderName>res</folderName> </packagedResource> </packagedResources> </platform>
具体含义请参照 Adobe官网相关链接
Step8 修改打包参数加入
-platformoptions platform.xml