使用 Adobe Air 构建 Android 原生库问:这一切似乎都非常复杂和困难!

2022-09-04 23:38:49

我目前正在AS3中使用Adobe Air sdk构建的Android应用程序。我想知道是否有可能编译一种可以在Android本机应用程序(Java)中导入的UI库。基本上,我想用Adobe Air构建我的UI,但是我的应用程序的主要部分使用Java,以原生方式。

我想到的是将adobe air生成的APK转换为我在本机应用程序项目中导入的Jar文件,并调用一些在屏幕上显示某些内容的函数。

可能吗?我认为这可能是可能的,因为当我不在应用程序中导入Adobe Air SDK时,我必须使用Play商店安装Adobe Air应用程序才能使我的应用程序正常工作。我在谷歌上找不到很多关于这个的东西:s。

感谢您的帮助。


答案 1

是的,它可以做到(理论上),但抓住你的帽子,这是一个颠簸的旅程!

我看到这是一个非常古老的问题,有一个新的赏金(提问者已经3年没有登录了!),但是我们开始了......
这种方法触及了Android Java应用程序如何构建和运行的核心(即DEX,因此它将与adobe-air任何东西一起使用,它是基本的[通用方法])。(通过以令人困惑的方式使用“本机”一词的方式,本机通常被理解为表示应用程序的 JNI (c++) 库元素)。
你说:

“我的想法是将Adobe air生成的APK转换为我在本机应用程序项目中导入的Jar文件,并调用一些在屏幕上显示某些内容的函数。

Android程序被编译成.dex(Dalvik Executable)[现在称为ART,但二进制兼容]文件,这些文件又被压缩成设备上的单个.apk文件(包括清单和资源等其他东西)。(解压缩.apk并查看内部)。

.jar文件包含 DEX 文件(压缩)。(解压缩已编译的.jar并查看内部)。

我以前做过一些这样的工作,这里有一个教程和编码示例的链接[由我测试](在android studio + gradle中)[通常需要自定义构建元素(我也给出了一个蚂蚁的例子)]。

查看我的堆栈溢出答案 动态加载 DEX 文件

从理论上讲,这回答了你的问题,但它是基本的东西,很复杂,并且有局限性,使得编码和维护变得困难(资源是a**e中真正的痛苦)。

问:这一切似乎都非常复杂和困难!

是的,它是!这是一件非常愚蠢的事情,很难做到!这就是为什么我们发明了跨平台框架(以及基于Web的代码javascript/css/html5...)。如果该端口不正确,则代码。


答案 2

我更像是Flash / AS3编码员,而不是Java,所以不能给你一个完整的答案,但是......

更好的方法可能是通过Java代码渲染基于SWF的自身(而不是将SWF编译为APK格式,然后尝试将Flash APK嵌入Android APK中)。User Interface

通过这种方式,您的 SWF 还可以与 Java 函数进行通信(通过 AS3 的类)。使在按下 SWF U.I 上的按钮等时更容易触发 Java 函数。external Interface

你只需要找到一个用于Java的SWF渲染库

也许看看SWFTools。特别是SWF类看起来很有前途。
我还没有测试这个库,但它可能会帮助你。


推荐