gpt4 book ai didi

java - 适用于 Android 的 Adob​​e AIR 3.1 native 扩展 - ActionScript 中的空扩展上下文

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:59 26 4
gpt4 key购买 nike

我正在为 Android 平台开发 Native Extension,但遇到困难...

针对 Android 2.1...在 Google Nexus One (2.3.6) 上测试

这一行返回NULL

this.context = ExtensionContext.createExtensionContext("com.company.ane.LocationManager", "");

这是扩展描述 rune 件:

<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 和模拟器上运行良好,使用默认库,但在实际的 Android 设备(Android-ARM 平台)上运行不正常。

ExtensionContext.createExtensionContext() 返回 null

原来这个问题是tools版本问题,Java编译器版本问题。我使用的是最新的 AIR (3.8)、JDK (1.7.25)、Android SDK (22.0.5) 等。它没有用。

但是在 javac 调用中添加 -target 1.6 后,它运行良好。

关于java - 适用于 Android 的 Adob​​e AIR 3.1 native 扩展 - ActionScript 中的空扩展上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com