Java Android Studio构建到jar

Java Android Studio构建到jar,java,android-studio,Java,Android Studio,有没有办法将Android应用程序从Android studio构建成可以在Windows/Mac/Ubuntu上运行的jar文件?若否,原因为何 尽管两者都是Java语法,但Oracle Java和Android Java几乎没有共同之处。Gradle当然可以打包JAR,但常规JRE不知道Android类。最好改用普通版,它非常适合桌面Java应用程序——否则你只能在or上运行Android应用程序,这不是太便携。尽管两者都是Java语法,但Oracle Java和Android Java几乎

有没有办法将Android应用程序从Android studio构建成可以在Windows/Mac/Ubuntu上运行的jar文件?若否,原因为何

尽管两者都是Java语法,但Oracle Java和Android Java几乎没有共同之处。Gradle当然可以打包JAR,但常规JRE不知道Android类。最好改用普通版,它非常适合桌面Java应用程序——否则你只能在or上运行Android应用程序,这不是太便携。

尽管两者都是Java语法,但Oracle Java和Android Java几乎没有共同点。Gradle当然可以打包JAR,但常规JRE不知道Android类。最好改用普通版,它非常适合桌面Java应用程序——否则你只能在or上运行Android应用程序,因为or不太便携;DR不,您不能在Windows/Mac/Linux上运行Android应用程序。只有模拟器和Android设备才能运行它们

在目标设备上运行之前,您应该检查
Gradle
在构建过程中执行的步骤。
要在PC上运行(我指的是Windows/Mac/Linux),您需要一个
jar
。构建步骤最接近于制作
jar
的是
javac

javac
之后,它执行步骤将java
.class
文件转换为Android可读格式或
dex
格式,然后将
dex
es打包为
.apk

Android的执行环境理解
dex
,而不是
.class
(如果理解了,那么Android应用程序可以在所有支持Java的系统上运行)

假设您设法在
javac
之后停止,然后设法构建了一个
jar
。一旦您尝试在Android环境以外的任何环境中运行它,您将得到大量的NoClassDefFoundErrors,因为所有特定于Android的类都不在普通JVM(非Android JVM)的库中


你应该检查一下这个。您会发现Android的Java实现与OpenJDK当时提供的非常不同

Tl;DR不,您不能在Windows/Mac/Linux上运行Android应用程序。只有模拟器和Android设备才能运行它们

在目标设备上运行之前,您应该检查
Gradle
在构建过程中执行的步骤。
要在PC上运行(我指的是Windows/Mac/Linux),您需要一个
jar
。构建步骤最接近于制作
jar
的是
javac

javac
之后,它执行步骤将java
.class
文件转换为Android可读格式或
dex
格式,然后将
dex
es打包为
.apk

Android的执行环境理解
dex
,而不是
.class
(如果理解了,那么Android应用程序可以在所有支持Java的系统上运行)

假设您设法在
javac
之后停止,然后设法构建了一个
jar
。一旦您尝试在Android环境以外的任何环境中运行它,您将得到大量的NoClassDefFoundErrors,因为所有特定于Android的类都不在普通JVM(非Android JVM)的库中


你应该检查一下这个。您会发现Android的Java实现与OpenJDK当时提供的非常不同

安卓应用程序运行在安卓系统上,而不是Windows、Mac或Linux上。安卓应用程序运行在安卓系统上,而不是Windows、Mac或Linux上。DEX是为Dalvik VM设计的-ART使用OAT(从DEX文件在设备上预编译)。@MartinZeitler是的,没错。但我的想法只是为了解释,没有深入细节。我认为在这种情况下使用它就足够了,因为只有最高层的概述才足以解释原因。@MartinZeitler同样,我使用术语
dex
的原因是
Gradle
任务名称仍然使用术语
dex
。这就是为什么。因为这样做的目的是鼓励OP自己向谷歌索取更多更新的信息,如果他们愿意,也可以了解流程。APK中仍然有DEX…只是想指出交付方式的变化。@MartinZeitler是的,当我打开
.apk
发现他们仍在使用
.dex
时,我觉得有点可笑。但我想这是因为向后兼容。这就是为什么他们可能会将
.dex
转换为和
oat
,以获得直接在金属上运行的原生材料。你指出这一点很好。好奇的观众将能够更快地得到正确的答案。谢谢.DEX是为Dalvik VM设计的-ART使用OAT(从DEX文件在设备上预编译)。@MartinZeitler是的,没错。但我的想法只是为了解释,没有深入细节。我认为在这种情况下使用它就足够了,因为只有最高层的概述才足以解释原因。@MartinZeitler同样,我使用术语
dex
的原因是
Gradle
任务名称仍然使用术语
dex
。这就是为什么。因为这样做的目的是鼓励OP自己向谷歌索取更多更新的信息,如果他们愿意,也可以了解流程。APK中仍然有DEX…只是想指出交付方式的变化。@MartinZeitler是的,当我打开
.apk
发现他们仍在使用
.dex
时,我觉得有点可笑。但我想这是因为向后兼容。这就是为什么他们可能会将
.dex
转换为和
oat
,以获得直接在金属上运行的原生材料。你指出这一点很好。好奇的观众将能够更快地得到正确的答案。谢谢,安卓环境怎么办