转载:http://sswilliam.blog.163.com/blog/static/1896963832011910101142574/
开发准备
Flash Builder 4.5 with AIR 3 SDK
AIR3 SDK下载:http://www.adobe.com/special/products/air/sdk/
不得不说这个链接隐藏的很好。找了好久才找到- =!。下载后解压,覆盖原有的SDK即刻
Eclipse with Android SDK
Native Extension - Hello World
下面我们以Android上的NativeExtension开发为例,实现一个最简单的hello world的demo。
整个Hello World项目会分成三部分:Android项目,Flex Library库项目和Flex Mobile项目。其中Android项目和Flex Library库项目构成了NativeExtension项目,Flex Mobile
Android
Android部分主要是java的开发,所需要用到的类库和相应的类会在下面的步骤中详细讲解。
1. 在eclipse中新建一个Android项目,设置好包名,注意不要勾选创建Activity。值得注意的是,Android AIR app与其他的Android App有所不同。 Android AIR app只有一个Activity,所以这里不需要创建Activity。而且在AIR NativeExtension项目中,我们只使用android的一些本地代码而非android的项目,因此,android项目中的AndroidManifest.xml不会被应用到最终的AIR app中。AIR app中的AndroidManifest.xml由AIR根据app-xml自动生成。
2. 将项目的类型设为Library型
右击项目,选择Properties
选中Android标签,勾选is Library
3. 导入NativeExtension所需的Jar包
Jar包位置
在properties面板中,选择Java Build Path,在Libraries tab中点击Add Extension JARs,在对话框中选中AIR SDK中 FlashRuntimeExtensions.jar
4. 设定src/gen下的代码不会被包括在项目中。
在Properties面板中的Java Build Path里进入Source tab。在/gen中选中Included,点击Edit按钮
添加一个nothing的Inclusion pattern
5. 在项目中添加相应的Java实现代码
HelloContext.java代码:
package net.sswilliam.ane.helloworld;
import java.util.HashMap; import java.util.Map;
import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction;
public class HelloContext extends FREContext {
public static final String HELLO_WORLD_FUNCTION ="hello_world_function"; @Override public void dispose() { // TODO Auto-generated method stub
}
@Override public Map<String, FREFunction> getFunctions() { // TODO Auto-generated method stub Map<String, FREFunction> map = new HashMap<String, FREFunction>(); //将函数和自定义字符串进行映射 map.put(HELLO_WORLD_FUNCTION, new HelloWorldFunction()); return map; }
}
|
HelloExtension代码:
package net.sswilliam.ane.helloworld;
import com.adobe.fre.FREContext; import com.adobe.fre.FREExtension;
public class HelloExtension implements FREExtension {
public FREContext createContext(String arg0) { // TODO Auto-generated method stub return new HelloContext(); }
public void dispose() { // TODO Auto-generated method stub
}
public void initialize() { // TODO Auto-generated method stub
}
}
|
HelloWorldFunction代码
package net.sswilliam.ane.helloworld;
import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; import com.adobe.fre.FREObject;
public class HelloWorldFunction implements FREFunction {
public FREObject call(FREContext arg0, FREObject[] arg1) { // TODO Auto-generated method stub FREObject result = null; try{
result = FREObject.newObject("hello "+arg1[0].getAsString()); //注意参数是一个FREObject数组,需要进行强制转换 }catch (Exception e) { // TODO: handle exception } return result; }
} |