java Android Studio构建到jar 1 月,1 周 Questions & Answers 27 有没有办法将Android应用程序从Android studio构建成可以在Windows/Mac/Ubuntu上运行的jar文件?若否,原因为何
# 1 楼答案 Tl;DR不,你不能在Windows/Mac/Linux上运行Android应用程序。只有模拟器和安卓设备才能运行它们 在目标设备上运行之前,应该检查Gradle在构建过程中执行的步骤 要在PC(我指的是Windows/Mac/Linux)上运行,您需要一个jar。构建步骤最接近于制作jar的是javac 在javac之后,它执行步骤将java .class文件转换为Android可读格式或dex格式,然后将dex文件打包为.apk Android的执行环境理解dex而不是.class(如果它理解,那么Android应用程序可以在所有支持Java的系统上运行) 假设您在javac之后设法停止,然后设法构建了一个jar。一旦您尝试在Android环境以外的任何环境中运行它,您将得到大量NoClassDefFoundErros,因为所有特定于Android的类都不在普通JVM(非Android JVM)的库中 你应该检查一下这个关于legal dispute between Oracle and Google。你会发现Android的Java实现与OpenJDK当时提供的非常不同
# 2 楼答案 尽管两者都是Java语法,但Oracle Java和Android Java几乎没有共同之处。Gradle当然可以打包JAR,但常规JRE不知道Android类。最好改用普通的IntelliJ IDEA,它非常适合桌面Java应用程序——否则你只能在emulator或Anbox上运行Android应用程序,因为它不太可移植
# 1 楼答案
Tl;DR不,你不能在Windows/Mac/Linux上运行Android应用程序。只有模拟器和安卓设备才能运行它们
在目标设备上运行之前,应该检查
Gradle
在构建过程中执行的步骤要在PC(我指的是Windows/Mac/Linux)上运行,您需要一个
jar
。构建步骤最接近于制作jar
的是javac
在
javac
之后,它执行步骤将java.class
文件转换为Android可读格式或dex
格式,然后将dex
文件打包为.apk
Android的执行环境理解
dex
而不是.class
(如果它理解,那么Android应用程序可以在所有支持Java的系统上运行)假设您在
javac
之后设法停止,然后设法构建了一个jar
。一旦您尝试在Android环境以外的任何环境中运行它,您将得到大量NoClassDefFoundErros
,因为所有特定于Android的类都不在普通JVM(非Android JVM)的库中你应该检查一下这个关于legal dispute between Oracle and Google。你会发现Android的Java实现与OpenJDK当时提供的非常不同
# 2 楼答案
尽管两者都是Java语法,但Oracle Java和Android Java几乎没有共同之处。Gradle当然可以打包JAR,但常规JRE不知道Android类。最好改用普通的IntelliJ IDEA,它非常适合桌面Java应用程序——否则你只能在emulator或Anbox上运行Android应用程序,因为它不太可移植