Ell*_*tus 10 java android gradle
为了构建一些Android项目,必须设置环境变量JAVA_HOME。(请参阅此Stack Exchange问题和Flutter Bug报告。)
我正在从事的项目就是这种情况。我想更改Gradle文件,因此无需进行设置JAVA_HOME。
Gradle是否有任何方法可以获取封闭的Android Studio进程使用的JDK的路径(或者让该进程在无需用户干预的情况下传入JDK)?JAVA_HOME尚未设置时,它应该可以工作。
一般有两种选择:
a) 编辑gradle.properties文件并定义您要使用的 JDK:
org.gradle.java.home=(path to JDK home)
Run Code Online (Sandbox Code Playgroud)
在那里它不能动态设置,因为这是一个鸡蛋/母鸡问题。
它也可能在其他计算机上失败,因为路径可能会有所不同。
但可以将其作为命令行选项传递:
./gradlew -Dorg.gradle.java.home=$JAVA_PATH
Run Code Online (Sandbox Code Playgroud)
供参考:构建环境。
b) 但是,也可以export JDK_HOME在文件顶部添加一条语句gradlew。想出了一个shell脚本,它至少可以检测Linux上默认的JDK安装(Android Studio在JRE上运行):
tmp=`which java`
export JAVA_HOME=${tmp::-9}
echo $JAVA_HOME
/usr/java/jdk1.8.0_172
Run Code Online (Sandbox Code Playgroud)
当然,我们还必须考虑根本不存在 JDK:
/usr/bin/which: no java in ...
Run Code Online (Sandbox Code Playgroud)
一般来说,这假设默认的 JDK 已经设置了替代项,就像包管理器通常会做的那样;例如yum install jdk1.8.0_102.x86_64。这里的问题是,没有简单的方法来确定在 Windows 上使用哪个 JDK 路径,因为 Windows 没有which命令,并且可能必须从注册表中读取。辅助 PS 脚本或可执行文件可以查找值并根据需要截断,从 file 调用gradlew.bat。仍然可能有其他方法来获取路径。
小智 4
你可以定义一个任务your_project_path/app/build.gradle
task javaHome {
println "JAVA_HOME:" + System.getProperty("java.home")
}
Run Code Online (Sandbox Code Playgroud)
运行任务:
./gradlew -q app:javaHome
Run Code Online (Sandbox Code Playgroud)
结果:
JAVA_HOME:/usr/lib/jvm/java-8-openjdk-amd64/jre
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |