Distriqt Facebook ANE 不会为 Android 编译

Distriqt Facebook ANE won't compile for Android

我在为 Android 编译 Distriqt Facebook ANE 时遇到问题。 它在 iOS 上运行良好,但在 Android.
上运行不正常 错误信息是:

dx tool failed:

UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: Java heap space at com.android.dx.cf.code.ExecutionStack.copy(ExecutionStack.java:66) at com.android.dx.cf.code.Frame.copy(Frame.java:98) at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:786) at com.android.dx.cf.code.Ropper.doit(Ropper.java:742) at com.android.dx.cf.code.Ropper.convert(Ropper.java:349) at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:280) at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137) at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93) at com.android.dx.command.dexer.Main.processClass(Main.java:729) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) at com.android.dx.command.dexer.Main.access0(Main.java:83) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:602) at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) at com.android.dx.command.dexer.Main.processOne(Main.java:632) at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)

ADT command line: ...

尝试使用 AIR18 和 AIR 16(更新 dx.jar 来自 distriqt 教程)。 我的清单包括所有 3 个需要的扩展:

<extensionID>com.distriqt.Core</extensionID>
<extensionID>com.distriqt.GooglePlayServices</extensionID>
<extensionID>com.distriqt.FacebookAPI</extensionID>

删除 GooglePlayServices 使编译成为可能,但应用程序在初始化 FacebokAPI 时崩溃。

使用 AIR16 而不使用 更新后的 dx.jar 也会在启动时直接使应用程序崩溃。目录记录了以下异常:

08-23 14:53:14.793 E/AndroidRuntime(3178): java.lang.RuntimeException: Unable to get provider com.facebook.FacebookContentProvider: java.lang.ClassNotFoundException: com.facebook.FacebookContentProvider in loader dalvik.system.PathClassLoader[/data/app/air.my.com.zas.lefiner-1.apk]

08-23 14:53:14.793 E/AndroidRuntime(3178): Caused by: java.lang.ClassNotFoundException: com.facebook.FacebookContentProvider in loader dalvik.system.PathClassLoader[/data/app/air.my.com.zas.lefiner-1.apk]

奇怪的是,使用 Core 和 GooglePlayServices 的 Distriqt GooglePlusANE 在两个平台上都能正常工作。所以我强烈认为 FacebookAPI 扩展有问题。

非常感谢任何帮助!

如果您正在使用 Intellij IDEA,请在 ActionscriptFlex 编译器中增加 Compiler heap size。这解决了我的问题。