Java字节码到.dex或.apk不起作用。。。什么';怎么办?
我正在测试用Eclipse(IDE)编写Java程序。 我的目标是,它将在Windows、Linux和Android上运行 将其导出为.class或.jar没有问题! 我设法用Android Studio工具“dx”将其转换为.jar也转换为.dex和.apk(天哪,这是一个糟糕的过程) 当我尝试在我的android手机(v6.0.1)上运行它们时,只有.apk是可执行的。。。当我运行.apk时,我得到:Java字节码到.dex或.apk不起作用。。。什么';怎么办?,java,android,eclipse,apk,dex,Java,Android,Eclipse,Apk,Dex,我正在测试用Eclipse(IDE)编写Java程序。 我的目标是,它将在Windows、Linux和Android上运行 将其导出为.class或.jar没有问题! 我设法用Android Studio工具“dx”将其转换为.jar也转换为.dex和.apk(天哪,这是一个糟糕的过程) 当我尝试在我的android手机(v6.0.1)上运行它们时,只有.apk是可执行的。。。当我运行.apk时,我得到: “Parsingfehler-Beim Parsen des Pakets is ein
“Parsingfehler-Beim Parsen des Pakets is ein Fehler aufgetreten”
(Parsingerror-在分析数据包时发生错误) 我做错了什么?我发布了我的代码,可能有一个错误:
/** v0.01 vom 22.06.2017 @author Rudolf Geist */
package allgemeines;
import javax.swing.JOptionPane;
public class Systemausleser
{
public static void main(String[] args)
{
// Ich will eine Main, die überall läuft
System.out.println("Infos auslesen \n");
System.out.println("Zeichen zwischen Ordnern (Betriebssystem-Abhängig!) : " + System.getProperty("file.separator") );
System.out.println("OS-Name: " + System.getProperty("os.name") );
System.out.println("OS-Architektur (OS-Bit-Version): " + System.getProperty("os.arch") );
System.out.println("User Name: " + System.getProperty("user.name") );
JOptionPane.showConfirmDialog(null, "Es klappt!");
}
}
当我试图用.bat[Windows]或sh[Linux-Lubuntu]启动这个程序的.class或.jar[称之为“testi”]时,它成功了
我是否可以继续只在blank Eclipse上开发,然后尝试转换为android兼容的格式。。。或者我应该重新尝试我的过程吗?您正在使用Java Swing库;这是安卓上的
当Swing处理JFrame
s和JPanels
时,Android使用Activity
s和FrameLayout
s。这意味着Android不知道如何执行您的代码,因为它甚至不知道什么是JOptionPane
您应该只尝试迁移基本计算,并避免任何特定于操作系统的调用。通过对照检查包调用,或快速将代码粘贴到中,查看是否有投诉,可以验证支持哪些函数
如果您确实需要一个独立于平台的UI,那么您应该考虑与可用库(如)的本机集成,或者搜索一个与平台无关的解决方案。我正是为这个问题而创建的。您正在使用Java Swing库;这是安卓上的
当Swing处理JFrame
s和JPanels
时,Android使用Activity
s和FrameLayout
s。这意味着Android不知道如何执行您的代码,因为它甚至不知道什么是JOptionPane
您应该只尝试迁移基本计算,并避免任何特定于操作系统的调用。通过对照检查包调用,或快速将代码粘贴到中,查看是否有投诉,可以验证支持哪些函数
如果您确实需要一个独立于平台的UI,那么您应该考虑与可用库(如)的本机集成,或者搜索一个与平台无关的解决方案。我正是为这个问题而创作的。我认为你的方法对Android是错误的。您不能创建一个到处运行的
main
方法,尤其是因为Android不是一个常见的Java环境
在我看来,更有用的方法是开发一个独立于系统的库,然后由依赖于系统的应用程序使用
因此,您可以提供三种不同的应用程序:
- 一个基于控制台/无头Java应用程序
- 一个基于Swing的Java应用程序
- 一个基于Android的应用程序
main
方法,尤其是因为Android不是一个常见的Java环境
在我看来,更有用的方法是开发一个独立于系统的库,然后由依赖于系统的应用程序使用
因此,您可以提供三种不同的应用程序:
- 一个基于控制台/无头Java应用程序
- 一个基于Swing的Java应用程序
- 一个基于Android的应用程序
System.out.println()
受Android支持,它将在Logcat输出中使用标签System.out
。您是否尝试过将代码编译为.jar
,并将其包含在Android构建路径中?我不理解您对构建路径的含义。是的,我有Eclipse(编译器设置在v1.7)和Android Studio。现在我将其导出为jar(Testi.jar)。接下来,我打开CMD,用“:d”切换到硬盘,导航到android studio的文件夹“cd d:\AndroidStudioSDK\build tools\25.0.3”,然后启动dx工具:dx--dex--output=“[path]\testi.apk”“[path]\testi.jar”,我通过usb电缆将这个创建的.apk(testi.apk)移动到我的androidphone。。。当我试着用我的手提电脑启动它时。。。我得到了错误信息。。。你看到我的错误了吗?或者我如何让它工作?如果我正确理解你的答案,这意味着整个GUI处理是不同的。因此,背景逻辑应该是兼容的。在我的情况下,所有sysout行都应该工作,或者你的操作系统也是特定的?我在androdstudio中复制了这个部分,但由于有两行注释不清,它不再工作了(在我再次转换这个新的.jar之后)。我试图用java.swing out对这两行进行注释。。。我错过什么了吗?你完全正确System.out.println()
受Android支持,它将在Logcat输出中使用标签System.out
。您是否尝试过将代码编译为.jar
,并将其包含在Android构建路径中?我不理解您对构建路径的含义。是的,我有Eclipse(编译器设置在v1.7)和Android Studio。现在我将其导出为jar(Testi.jar)。接下来,我打开CMD,用“:d”切换到硬盘,导航到android studio的文件夹“cd d:\AndroidStudioSDK\build tools\25.0.3”,然后启动dx工具:dx--dex--output=“[path]\testi.apk”“[path]\testi.jar”