Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将.class转换为.dex_Java_Android_Android Studio_Android Gradle Plugin_Dex - Fatal编程技术网

Java 将.class转换为.dex

Java 将.class转换为.dex,java,android,android-studio,android-gradle-plugin,dex,Java,Android,Android Studio,Android Gradle Plugin,Dex,我有一个使用Android密钥库API的java程序。 我们需要运行这个程序来验证基于android的板上的一些签名操作 通过android studio运行该程序效果良好,即创建一个示例应用程序并安装该apk。 但是我们需要通过命令行运行这个程序,因为实际的程序不是apk格式的 当尝试将此程序转换为dex格式时,抛出错误 通过将android.jar作为类路径传递,编译成功 javac -cp /<path>/Android/Sdk/platforms/android-23/and

我有一个使用Android密钥库API的java程序。 我们需要运行这个程序来验证基于android的板上的一些签名操作

通过android studio运行该程序效果良好,即创建一个示例应用程序并安装该apk。 但是我们需要通过命令行运行这个程序,因为实际的程序不是apk格式的

当尝试将此程序转换为dex格式时,抛出错误

通过将android.jar作为类路径传递,编译成功

javac -cp /<path>/Android/Sdk/platforms/android-23/android.jar  ApiClientAndroidKeyStore.java
在进一步的调试中,我们发现android.jar只包含API defns,但实际的源代码并不存在

1) 是否有包含源代码的android.jar可用(大小可能是一个问题)

2) 我们可以在dex转换步骤传递源代码吗

3) 当构建或引用足够时,apk是否也包含源代码


4) 我们可以使用android studio在构建apk时使用的命令行中的相同命令吗?问题是
坏类文件magic(cafebabe)或版本(0034.0000)
。版本0x34(52十进制)是一个java 8类文件,旧版本的dx无法处理该文件

有两种方法可以解决这个问题。首先是运行android sdk管理器并获取最新版本的构建工具。这应该包含更新版本的dx工具,它可以处理Java8类文件

另一个解决方案是告诉javac使用-source和-target标志为早期版本的java编译。e、 g

javac -source 1.7 -target 1.7 -cp /<path>/Android/Sdk/platforms/android-23/android.jar  ApiClientAndroidKeyStore.java
javac-source 1.7-target 1.7-cp//Android/Sdk/platforms/Android-23/Android.jar ApiClientAndroidKeyStore.java

关于只包含存根的android.jar文件,这是正常的,不需要担心。javac只需要存根进行编译。这些类由Android框架提供,不包含在您的应用程序中。因此,javac实际上并不需要包含这些类的完整实现的类文件——它只需要知道类/方法/字段签名,这样它就可以正确地链接它们。

使用最新的构建工具解决了这个问题,感谢您的回复。你也能检查一下这个问题吗?任何帮助都会很好-
javac -source 1.7 -target 1.7 -cp /<path>/Android/Sdk/platforms/android-23/android.jar  ApiClientAndroidKeyStore.java