AIR ANE应用添加KeyMob广告管理库详细教程

来源:互联网 发布:mac清理垃圾桶快捷键 编辑:程序博客网 时间:2024/05/20 20:03

以下教程是用在android手机上的

首先,在这个教程里要准备的工具:

1、flash cs6
2、flash builder 4.6 (低版本的没用过,介意大家还是用我提供的这个版本);

3、adt打包工具(论坛回复本帖就能下载);

4、数字证书(就是用来签证的玩意,可以向adobe申请,也可以自己用flash cs6创建);


一、创建jar文件
 .jar就是个java文件,android系统原生就是java来写的,所以我们想扩展android 上的air,就得有个jar文件来实现你要的功能。

1、先打开FB(就是flash builder,以后都叫它FB了)。建一个java项目。(文件-新建-其它-java项目|  file-new -other-java-java project)。然后,随便起个名字,最后点击完成就行啦


然后,看看项目目录,应该就是这个:

然后,对着项目点右键(就是对着myExtensonJava点右键),点击属性,再选java构建路径,然后选库路径、再选添加外部jar,再找到flash cs6目录下AIR3.2\lib\android\ FlashRuntimeExtensions.jar文件(properties—java built path—library—Add External JARs ——XXX目录下的FlashRuntimeExtensions.jar—打开如图:


然后,在项目的src文件下建一个包,包名自定,我这用的是com.three,接着再在这个包下建3java类。先看看项目结构


JAVA代码如下:
A、Extension的代码

    //Extension这个类是ASJAVA交互的最基础的入口。

1. package com.three;

        2. import com.adobe.fre.;

               3. public class Extension implements FREExtension {

@Override

4. public FREContext createContext(String arg0) {

//new一个新的threeExtensionContext出来;

5. return new threeExtensionContext();

}

@Override

 // 这个销毁资源的方法,暂时没有什么作用,空着

6. public void dispose() {

}

 @Override

 // 初始化方法,暂时用不着,空着先

7. public void initialize() {

}

 }

B、threeExtensionContext的代码:

1. package com.three;

2. import java.util.*;

3. import com.adobe.fre.FREContext;

4. import com.adobe.fre.FREFunction;

5. public class threeExtensionContext extends FREContext {

 //这个貌似也用不着,空着

6. public threeExtensionContext(){

}

@Override

7. public void dispose() {

 }

@Override

8. public Map<String, FREFunction> getFunctions() {

 // 下面这个比较关键,它的作用是定义asJAVA具体方法通信的重要接口

9. Map<String,FREFunction> functionMap=new HashMap<String,FREFunction>();

10. functionMap.put("test",new test());

11. return functionMap;

 }

 }

C,test的代码:

1. package com.three;

2. import com.adobe.fre.FREContext;

3. import com.adobe.fre.FREFunction;

4. import com.adobe.fre.FREInvalidObjectException;

5. import com.adobe.fre.FREObject;

6. import com.adobe.fre.FRETypeMismatchException;

7. import com.adobe.fre.FREWrongThreadException;

8. public class test implements FREFunction {

 @Override

 //这个类作用就是 AS调用CALL方法给java传一个FREObject的参数组,然后,javaas返回一个FREObject

9. public FREObject call(FREContext arg0, FREObject[] arg1) {

// 定义方法的具体内容

10. int a=0; //声明一个整形变量a

//声明一个FREObject对象b,待会返回用的;

11. FREObject b = null; 

12. try {

13. a=arg1[0].getAsInt();//读取as传过来的整理参数并赋值给a

14. } catch (IllegalStateException e) {

15. //FB自己添加的

16. e.printStackTrace();

17. } catch (FRETypeMismatchException e) {

18. //FB自己添加的

19. e.printStackTrace();

20. } catch (FREInvalidObjectException e) {

21. //FB自己添加的

22. e.printStackTrace();

23. } catch (FREWrongThreadException e) {

24. //FB自己添加的

25. e.printStackTrace();

 }

26. try {

//调用FREObject的静态方法把a这个整型变量写到b里去;

27. b=FREObject.newObject(a*100);

28. } catch (FREWrongThreadException e) {

29. //FB自己添加的

30. e.printStackTrace();

}

//再返回b;

31. return b;

}

 }

最后,写完了,没有报错的话,就右键项目,点导出-java-jar文件。

二、创建SWC文件
还是用FB,这次来创建swc库。至于什么是swc,自己去谷哥百度一下吧。
1、用FB,新建一个flex库项目(flex library)。就是  文件-新建-flex库项目。如果找不着,就 文件-新建-其它-flash builder --flex库项目。


2、写代码:

1. package com.three

2. import flash.external.ExtensionContext;

3. public class callJava(){

4. var context:ExtensionContext;

5. public function callJava(){

6. context=ExtensionContext.createExtensionContext("com.three.Extension","");

}

7. public function callJavaTest(value:int):int{

8. var a:int;

9. a=context.call("test",value) as int;

10. return a;

 }

 }

 }

看看项目结构:

看到myExtension.swc之后右键点击它,然后复制出来,跟刚才那个jar文件放在一起。


          然后,复制一个myExtension.swc的副本,把它改成myExtension.zip,并解压到当前目录;

、extension.XML 文件
extention.XML文件,上面定义了ane运行环境配置等乱七八遭的东西;
1、新建 一个文本文件,打开,粘入以下代码

1. <extension xmlns="http://ns.adobe.com/air/extension/2.5">

2. <id>com.three.Extension</id>

3. <versionNumber>1</versionNumber>

4. <platforms>

5. <platform name="Android-ARM">

6. <applicationDeployment>

7. <nativeLibrary>myExtensionJava.jar</nativeLibrary>

8. <initializer>com.three.Extension</initializer>

9. <finalizer>com.three.Extension</finalizer>

10. </applicationDeployment>

11. </platform>

12. </platforms>

13. </extension>

然后把这个文本文件改成extension.xml就行了。同样,把它跟.jarswc放在一起。

四、签证 文件(P12)
这个数字签证文件,要申请正式的挺麻烦的(还得花钱,并提供公司相关信息。)不过还好用flash可以自己创建开发版的。以下就是自己创建签证文件的过程;
1、打开flash,新建一个air项目(air for desktop 或是air forandroid 还是 air for ios 都可以);
2、文件—AIR 3.2 for XXX配置—签名—创建。。然后自己慢慢填吧,填好了保存出来,跟刚才创建的那一堆东西放在一起。

五、ADT打包
注:此ADT可不是android的那个ADT。 这个ADT只是一个打包工具,文件是 adt.jar 。要使用它,你的电脑上还得安装java运行环境。这里就没写了,因为谷歌上面有教程的。
这工具回复贴子有下载,下载完后同样把它放到刚才那个文件目录下,现在目录应该是这样子:

然后,在这个文件夹下按着shift键点鼠标右键,在弹出的菜单里选 :在此处打开命令窗口。

然后就开始输入指令吧。这玩意是命令行工具,我就直接把命令粘下来了
java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore a.p12 -storepass 123 -target ane m.ane extension.xml  -swc myExtensionAs.swc -platform Android-ARM library.swf myExtensionJava.jar

命令使用起来其实挺简单的,不过有几个地方要注意。一个-tsa none ,这个在很多教程里都没有写这句,也许你们那不知道,会报一个时间戳的错因为如果不写,adt打包会连接一个国外的网站获得时间戳,但国外网站禁止在国内访问,所以报错。解决方法就是让它别写时间戳,也就是加-tsa none要么用翻墙软件也行,这两者随便选择那个

我现在是生成了一个叫m.ane的文件了,下面进入代码测试环节。
现在可以写代码来测试了:
1、用flash cs6 新建一个air for android项目;
2、打开文件—actionScript设置库路径点击(浏览到本机扩展(ANE)文件)找到我们生成的那个ANE文件点确定。

3、在flash面板上,点击窗口,然后组件。打开组件面板,拖两个textArea和一个button 到舞台上。 这两个textArea分别命名为txt1txt2 button命名为btn
如图:

4、按F9键打开动作面板 ,输入代码:

1. import com.three.callJava;

2. import flash.events.MouseEvent;

3. var con:callJava=new callJava();

4. btn.addEventListener(MouseEvent.CLICK,onClick);

5. function onClick(e){

6. var cj:callJava=new callJava();

7. var a:int=int(txt1.text);

8. var b:int=cj.callJavaTest(a);

9. txt2.text=b.toString();

}

想要看效果,在Windows下是不行的,必须要连上android手机。然后在AIR 3.2 for android 设置里部署面板上选上发布以后在连接的android设置运行程序。当然,签名证书也要填上。另外一点是,手机上要安装air。如果手机不想装air,也可以同样,在布署面板里勾选将air运行时嵌入应用程序。

然后点发布就可以测试效果了。如果发布的时候提示版本错误,那就回到flex库项目那,把那个myExtensinAs项目的flex库编辑器的附加的编译器参数里加上-swf-version=11


最终运行结果呢,因为是在手机上,不好截图,就不展示了... 












0 0
原创粉丝点击