因此,我一直在研究如何使用dalvikvm在android设备上运行Java代码。我可以使用命令dalvikvm -cp RunTest.dex RunTest成功运行一个编译为.dex文件的Java程序,其中有一个具有主要功能的RunTest类。我一直在将RunTest.dex和libeit_test.so(我的本机库)推送到/ data / local / tmp,在其中调用上述命令。我的问题是:是否可以将RunTest.dex和libeit_test.so打包到apk中,并使用类似dalvikvm -cp RunTest.apk RunTest之类的apk运行我的程序?我一直用./dx --dex output=RunTest.apk RunTest.dex libeit_test.so打包我的apk,但是当我调用dalvikvm -cp RunTest.apk RunTest时程序无法运行。

java.lang.NoClassDefFoundError: RunTest
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "RunTest" on path: DexPathList[[zip file "RunTest.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]


所有这些的全部目的是将一个文件推送到设备上并运行我的测试程序。我正在尝试使事情尽可能简单和简约。

最佳答案

您所描述的命令行用于构建DEX文件(包括其中的所有.JAR和.SO文件),一旦您的代码和依赖项正确地进行了DEX,就需要使用Android SDK的AAPT工具来构建APK:

aapt \
  package \
  -f \
  -M AndroidManifest.xml \
  -S res \
  -I %ANDROID_HOME%/platforms/android-19/android.jar \
  -F my-app.ap_ \
  --debug-mode

10-08 13:05