加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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调用之后,它运行良好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读