我正在研究Android平台的Native Extension,我被卡住了......
针对Android 2.1 ...在Google Nexus One上进行测试(2.3.6)
该行返回NULL
this.context = ExtensionContext.createExtensionContext("com.company.ane.LocationManager", "");
Run Code Online (Sandbox Code Playgroud)
这是扩展描述符文件:
<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>
Run Code Online (Sandbox Code Playgroud)
那是我的包命令:
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
Run Code Online (Sandbox Code Playgroud)
在这个阶段,扩展非常简单......我只是想将字符串值返回给我的应用程序...
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 …Run Code Online (Sandbox Code Playgroud) 我的ANE文件的结构如下所示:
<META-INF>
<ANE>
<Windows-x86>
ExtensionDll.dll
DllUsedByExtensionDll.dll
extension.xml
mimetype
catalog.xml
library.swf
Run Code Online (Sandbox Code Playgroud)
如果ExtensionDll.dll使用其他Dll中的函数,则不会加载扩展名.DllMain没有被调用.当空中应用程序使用扩展程序运行时,似乎DllUsedByExtensionDll.dll不在Dll搜索路径中.
如果我不想将它们放入一些常见的Dll路径,我应该如何让应用程序找到额外的Dll?
Adobe 的振动功能在iOS和Android上的Flex移动应用程序中运行良好,但是当我尝试在Windows 7上从Flash Builder 4.7启动AIR模拟器时,我收到错误:


这里是后一个截图的错误消息的副本:
Process terminated without establishing connection to debugger.
The content cannot be loaded because there was a problem loading an extension: Error: Requested extension com.adobe.Vibration is not supported for Windows-x86.
Launch command details: "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\bin\adl.exe" -runtime "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\runtimes\air\win" -profile extendedMobileDevice -screensize 640x920:640x960 -XscreenDPI 326 -XversionPlatform IOS -extdir "C:\Users\xxx\Adobe Flash Builder 4.7\.metadata\.plugins\com.adobe.flexbuilder.project.ui\ANEFiles\MyApp-Mobile\win32\" C:\Users\xxx\Documents\MyApp\mobile\bin-debug\MyApp-app.xml C:\Users\xxx\Documents\MyApp\mobile\bin-debug
Run Code Online (Sandbox Code Playgroud)
同时:
Adobe的另一个ANE - Adobe Gaming SDK …
如何在Xcode中创建本机窗口并将其与Mobile Flex应用程序集成.本机窗口应该与StageWebView组件类似,其中本机内容浮动在Flex应用程序的其余部分的矩形区域中.
也许我的问题听起来像之前被问过100次,但相信我,我已经阅读了100个类似问题的每个答案,而不是他们解决了我的问题.因此,我原生扩展的目的是在我的应用缓存文件夹(doc,pdf等)中与第三方应用(Quick Office,Adobe Reader等)共享文档.我发现FileProvider和Intents应该可以解决我的问题.
我的应用说明文件包含:
<application android:enabled="true"
android:launchMode="singleInstance">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.test.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
Run Code Online (Sandbox Code Playgroud)
在Eclipse中的Project属性 - > Java Build Path - > Order and Export selected:Android Private libraries和Android Dependencies.android-support-v4.jar位于项目的libs文件夹中.
FREFunction代码摘录:
package com.test.OpenWithDefaultApp.functions;
.....
import android.content.Intent;
import android.net.Uri;
import android.support.v4.content.FileProvider;
.....
Uri contentUri = FileProvider.getUriForFile(context.getActivity(), "com.test.OpemWithDefaultApp.fileprovider", file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(contentUri, fileType);
.....
context.getActivity().startActivity(intent);
.....
Run Code Online (Sandbox Code Playgroud)
我正在使用
Eclipse Luna 4.4.0
Eclipse Android Plugin 23.0.3
Android SDK Tools 23.0.2
Android SDK Platform-tools 20
Android SDK Build-tools 20 …Run Code Online (Sandbox Code Playgroud) 我有一个错误,我不明白为什么出现,最奇怪的是有时会发生,但最近总是发生,我使用的代码是相同的,我没有对它做任何更改,事实上我不执行任何代码应用程序的开始,我使用按钮,所以我没有得到这个错误的原因请帮助我,错误是一个对话框,说:
本机扩展错误:存在打包错误/警告.检查每个目标平台的Flex Build Packaging Page中的每个本机扩展.你想继续吗?
当我点击是程序不启动时,debbuger告诉我这一行:
[SWF] SerialCOMGame.swf - 解压缩后的2,121,630字节
但从未开始,我使用RS232库进行串行通信,在得到此错误之前这项工作正常但我不知道发生了什么,我的C代码是:
/*
* NativeSerialComunication.c
*
* Created on: Jan 10, 2012
* Author: Diego Fernando
*/
#include "NativeSerialComunication.h"
int comport = 0;
int baudrate = 57600;
int buffsize = 4096;
unsigned char buffer[4096];
uint32_t comportOpened = 0;
FREObject IsSupported(FREContext ctx, void* functionData, uint32_t argc,
FREObject argv[]) {
FREObject result;
uint32_t isSuppoerted = 1;
FRENewObjectFromBool(isSuppoerted, &result);
return result;
}
int startCOMListener() {
if (!OpenComport(comport, baudrate)) {
comportOpened = 1;
return 1; …Run Code Online (Sandbox Code Playgroud) c serial-port actionscript-3 flash-builder air-native-extension
我们正在使用AIR Mobile开发iOS视频聊天应用程序,声学回声是一个真正的显示阻止.显然Adobe getEnhancedMicrophone()回归null不能帮助我们.
然而,与Android不同,它看起来像声学回声消除是iOS上的标准功能.有没有办法使用Native Extensions,例如,在我们的应用程序中启用AEC kAudioUnitSubType_VoiceProcessingIO?
这个问题仅限iOS,我们此时对Android不感兴趣.
我正在尝试使用 AdvertisingIdClient 获取我的 AIR 应用程序的广告 ID。所以我确实喜欢dvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)A。我没有收到任何编译时错误。我ANE由此生成。当控制遇到这个语句时,它立即抛出NoClassDefFoundError。我不明白到底发生了什么。这是我的扩展代码
public class GetAdvertismentID implements FREFunction
{
@Override
public FREObject call(FREContext arg0, FREObject[] arg1)
{
Activity activity = arg0.getActivity();
Context context = activity.getApplicationContext();
String advertId = "initializeByGet\n";
try
{
AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context);
//if (!adInfo.isLimitAdTrackingEnabled())
//advertId = advertId + adInfo.getId();
} catch(Error e) {
String stackTrace = "";
StackTraceElement[] stackArray = e.getStackTrace();
for(int i = 0; i < stackArray.length; i++)
stackTrace += stackArray[i].toString() + "\n";
advertId …Run Code Online (Sandbox Code Playgroud) 我正在使用Flex 3.6创建原生扩展.编码的本机端然后创建Flex库项目,然后创建.ane文件.最后将.ane文件导入myFlex Project.
这是我遇到的问题.当我正在调试应用程序时,"1046:未找到类型或不是编译时常量:ExtensionContext"错误发生.附上了图书馆项目.as class.
提前致谢
package com.extension.samples
{
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.external.ExtensionContext;
public class NetworkConnectionANE extends EventDispatcher
{
public var _extContext : ExtensionContext;
public function NetworkConnectionANE(target:IEventDispatcher=null)
{
_extContext = ExtensionContext.createExtensionContext("com.extension.samples.NetworkConnectionANE", null);
super(target);
}
public function Connect(path:String):int
{
return _extContext.call("nativeFunc", path);
}
public function dispose():void
{
_extContext.dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我尝试使用从另一个Flex桌面应用程序中的库项目创建的.swc文件,但同样的错误
也尝试使用_extContext = ExtensionContext.createExtensionContext("com.extension.samples.NetworkConnectionANE","");
编辑:有关Flex SDK的问题,SDK 4.6中没有问题.现在的问题是,如何在Flex 3.6 SDK的lib项目中使用Extension?
我正在构建一个具有第三方JAR依赖关系的Adobe Native扩展(ANE).我确保第三方类文件被提取并打包在ANE JAR中(如本答案中所述)
但是当我为我的应用程序构建最终的android APK时,classes.dex中缺少这些类.似乎ADT正以某种方式剥离它们.值得一提的是,我使用的第三方JAR是使用Java 1.7构建的,我使用的是Java 1.6.
apache-flex actionscript noclassdeffounderror actionscript-3 air-native-extension
是否可以从您的本机代码返回结构?返回int或boolean是相对简单的,但是如何将更复杂的结构返回到actionscript?
我正在编写一个扩展,允许 Flex 应用程序访问 Android 的本机图像选择器。我能够毫无问题地启动图像选择器活动,但是在它返回到调用方(一个 FREFunction 对象)之后,不会调用 onActivityResult。因此,我无法弄清楚用户选择了什么图像。
当我在原生 Android 应用程序中使用完全相同的 FREFunction 内容时,该应用程序工作正常,并且我能够在 onActivityResult 中检索所选图像的 URI。我怎样才能让 onActivityResult 触发,或者至少检索图像选择器活动返回的信息?
我需要在我的Flex Mobile应用程序中使用Android SDK显示用Java编写的Activity.我已经看到它使用Map ANE完成,但找不到任何示例代码或任何类型的东西.我已经创建了我的ANE工作所需的Java和ActionScript代码(创建了活动,真正桥接Java和AS3所需的所有类,事件和方法都在那里),我只是无法弄清楚如何添加它到了舞台.我知道它不能添加到DisplayList中,我很好,它是一个舞台对象.
如果它有帮助,我试图使用MediaPlayer显示视频(由于使用AS3/Flex完成MP4流媒体问题).
迈克尔(2012年8月27日@M:00上午9:44):
08-27 09:27:07.836: I/CS VideoInit(2567): context is set
08-27 09:27:07.836: I/CS VideoInit(2567): intent is instantiated
08-27 09:27:07.836: I/ActivityManager(349): START {cmp=air.AndroidANETesting2/xi.video.android.extension.VideoActivity u=0} from pid 2567
Run Code Online (Sandbox Code Playgroud)
我活动的第一行是
Log.i("CS VideoActivity","Made it inside the activity somehow");
Run Code Online (Sandbox Code Playgroud)
这是我的Java.这是init函数:
VideoInit.context = context;
Log.i("CS VideoInit","context is set");
Intent intent = new Intent( context.getActivity(), VideoActivity.class );
Log.i("CS VideoInit","intent is instantiated");
context.getActivity().startActivity( intent );
Log.i("CS VideoInit","Activity is started");
context.dispatchStatusEventAsync("PLAY", "PLAY");
Run Code Online (Sandbox Code Playgroud)
这是我的VideoActivity onCreate():
super.onCreate(savedInstanceState);
Log.i("CS VideoActivity","Made it inside the activity somehow");
Run Code Online (Sandbox Code Playgroud)
我的Manifest for good measure(只是申请部分): …
air ×10
apache-flex ×6
android ×5
ios ×2
actionscript ×1
adobe ×1
ads ×1
c ×1
dll ×1
flash ×1
flex-mobile ×1
flex4 ×1
java ×1
mobile ×1
native ×1
serial-port ×1
windows ×1
xcode ×1