相应工具或SDK http://
1、Flex Builder 4.6
3、JDK
一、创建Android扩展
运行FLEX BUILDER 选择文件新建->其它->JAVA 如图,输入你的工程名
右键我的项目选择属性,选库标签项,添加Android.jar 和FlashRuntimeExtensions.jar
在工程下对应创建如下文件
Extension.java
/**
*
*/
package com.ane;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
/**
* @author Administrator
*
*/
public class Extension implements FREExtension {
@Override
public FREContext createContext(String arg0)
{
return new ANEExtensionContext();
}
@Override
public void dispose() {
}
@Override
public void initialize() {
//
}
}
ANEExtensionContext.java
<span style="background-color:#ffffff">/**
*
*/
package com.ane;
import java.util.HashMap;
import java.util.Map;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
/**
* @author Administrator
*
*/
public class ANEExtensionContext extends FREContext {
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public Map<String, FREFunction> getFunctions() {
Map functionMap = new HashMap();
functionMap.put("getDeviceID",new ANEDeviceInfo());
return functionMap;
}
}
</span>
ANEDeviceInfo.java
package com.ane;
import android.content.Context;
import android.telephony.TelephonyManager;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import com.adobe.fre.FREWrongThreadException;
public class ANEDeviceInfo implements FREFunction {
@Override
public FREObject call(FREContext pContext, FREObject[] args) {
FREObject result = null; //声明一个FREObject对象b,待会返回用的;
Context context = pContext.getActivity();//用来取得AIR程序中的Context对象
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try{
result=FREObject.newObject(tm.getDeviceId());//调用FREObject的静态方法把a这个整型变量写到b里去;
}catch(FREWrongThreadException e)
{
e.printStackTrace();
}
return result;
}
}
保存,右键项目,选择“导出”JAVA包...
二、创建SWC
1、用FB,新建一个flex库项目(flex library)。就是 文件-新建-flex库项目。如果找不着,就 文件-新建-其它-flash builder --flex库项目
创建asAneExtension.as
package com.extension
{
import flash.external.ExtensionContext;
public class asAneExtension
{
var context:ExtensionContext = null;
public function asAneExtension()
{
context=ExtensionContext.createExtensionContext("com.ane.Extension","");
}
public function getDeviceID():String
{
var sId:String = context.call("getDeviceID") as String;
return sId;
}
}
}
AS工程结构如下
右键我的项目,选择”构建项目“,可以看到bin下有一个asAneExtension.swc的元件
把asAneExtension.swc复制出来,跟刚才那个jar文件放在一起。
然后,复制一个asAneExtension.swc的副本,把它改成asAneExtension.zip,并解压到当前目录;
新建一个extension.xml和刚才的JAR以及SWC放在同一目录
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
<id>com.ane.Extension</id>
<versionNumber>1.1.0</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>myExtensionJava.jar</nativeLibrary>
<initializer>com.ane.Extension</initializer>
</applicationDeployment>
</platform>
</platforms>
</extension>
打包生成ANE
java -jar adt.jar -package -tsa none -storetype pkcs12 -keystorea.p12-storepass123-target anem.ane extension.xml -swcasAneExtension.swc -platform Android-ARM library.swfjavaAneExtension.jar
a.p12 为证书文件,可以通过FLASH CS6,创建
123 为证书的密码
m.ane 为生成后的ANE名字
。。。
四、在FLASH CS6中调用AND
1、新建ANDROID 项目
2、文件->ActionScript设置。。。
编写代码调用ANE,即可在文本框中显示设备ID
<span style="color:#333333">import com.extension.*;
var obj:asAneExtension = new asAneExtension;
var s:String = obj.getDeviceID();
txtID.text = s;
</span>