我一直在尝试在 android 设备上将 Java 应用程序作为独立的 jars(而不是 apk)运行。一开始一切都很顺利:我使用 Android SDK 中的 dex 编译器,将 dex 文件打包到 jar 中,将其推送到设备并使用shell 脚本(类似于链接中的示例)来运行它。
当我包含更多库并达到 65K dex 函数限制时,我在 dex 编译器中使用了 --multi-dex 标志。编译成功,我还能够在 Lollipop 设备上运行我的代码。但是,在 Kitkat 上运行完全相同的 jar 会得到以下运行时异常:
java.lang.VerifyError: scala/None$
at akka.actor.ActorSystem$.<init>(ActorSystem.scala:30)
at akka.actor.ActorSystem$.<clinit>(ActorSystem.scala)
at akka.actor.ActorSystem.create(ActorSystem.scala)
at com.example.MyClass.calculate(MyClass.java:185)
at com.example.Main.main(Main.java:16)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
at dalvik.system.NativeStart.main(Native Method)
当我尝试运行与 apk 相同的代码时,我遇到了完全相同的问题,并通过在 Android 清单中添加一行来解决它:
android:name="android.support.multidex.MultiDexApplication"
这在当前情况下显然是不可能的,因为我没有清单文件。
如何仍然为我的独立 jar 启用 multidex 支持?我应该在编译中添加库吗?我应该以不同的方式运行 jar 吗?
谢谢。