java – Adob??e AIR 3.1 Android的Native Extension – 在Actio
发布时间:2020-12-14 05:39:31 所属栏目:Java 来源:网络整理
导读:我正在使用 Android平台的Native Extension,我被卡住了 针对Android 2.1 …在Google Nexus One上进行测试(2.3.6) 此行返回NULL this.context = ExtensionContext.createExtensionContext("com.company.ane.LocationManager",""); 这是扩展描述符文件: exten
我正在使用
Android平台的Native Extension,我被卡住了
针对Android 2.1 …在Google Nexus One上进行测试(2.3.6) 此行返回NULL this.context = ExtensionContext.createExtensionContext("com.company.ane.LocationManager",""); 这是扩展描述符文件: <extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>com.company.ane.LocationManager</id> <versionNumber>0.0.1</versionNumber> <platforms> <platform name="iPhone-ARM"> <applicationDeployment> <nativeLibrary>libANELocationManager.a</nativeLibrary> <initializer>ExtInitializer</initializer> <finalizer>ExtFinalizer</finalizer> </applicationDeployment> </platform> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>libANELocationManager.jar</nativeLibrary> <initializer>com.company.ane.android.ANELocationManager</initializer> </applicationDeployment> </platform></platforms></extension> 这是我的包命令: adt -package -target ane ./../../app/libs/locationmanager.ane ./../extension.xml -swc ane_location_manager.swc -platform iPhone-ARM library.swf libANELocationManager.a -platform Android-ARM library.swf libANELocationManager.jar 在这个阶段扩展真的很简单…我只是想把字符串值返回到我的应用程序… package com.company.ane.android; import java.util.HashMap; import java.util.Map; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; import android.location.LocationListener; import android.location.LocationManager; public class ANELocationManagerContext extends FREContext { public LocationManager locationManager; public LocationListener locationListener; @Override public void dispose() { // TODO Auto-generated method stub } @Override public Map<String,FREFunction> getFunctions() { Map<String,FREFunction> functionMap = new HashMap<String,FREFunction>(); functionMap.put("ExtensionTest",new ExtensionTest()); return functionMap; } } package com.company.ane.android; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; import com.adobe.fre.FREObject; import com.adobe.fre.FREWrongThreadException; public class ExtensionTest implements FREFunction { @Override public FREObject call(FREContext context,FREObject[] args) { FREObject result = null; //ANELocationManagerContext ctx = (ANELocationManagerContext) context; try { result = FREObject.newObject("It works!"); } catch (FREWrongThreadException fwte) { fwte.printStackTrace(); } return result; } } package com.company.ane.android; import com.adobe.fre.FREContext; import com.adobe.fre.FREExtension; public class ANELocationManager implements FREExtension { @Override public FREContext createContext(String contextType) { return new ANELocationManagerContext(); } @Override public void dispose() { // TODO Auto-generated method stub } @Override public void initialize() { // TODO Auto-generated method stub } } 解决方法
我有完全一样的问题.
我的ANE在iOS上运行正常,在模拟器上使用默认的lib,但在实际的Android设备(Android-ARM平台)上没有工作. 而ExtensionContext.createExtensionContext()返回null. 原来这个问题是工具版本问题,Java编译器版本.我正在使用最新的AIR(3.8),JDK(1.7.25),Android SDK(22.0.5)等.它没有起作用. 但是在将目标1.6添加到javac调用之后,它运行良好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |