因为项目为插件工程,每次编译需要使用“./gradlew pushPlugin”自动push到壳工程,但是...我的不行,就不行...
错误如下:
* What went wrong:
A problem occurred configuring project ':app'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.Buil dArtifactReportTask.
一脸懵逼,完全看不懂....
按照提示尝试找找错误原因,然后一顿操作,猛如虎:
./gradlew --stacktrace
./gradlew --info
./gradlew --scan
...
“./gradlew --stacktrace”,发现了详细点的异常信息,如下:
看着就晕,哈哈,这个只是烟雾弹,主要说的是task.leftshift方法已经被弃用了,并计划在Gradle 5.0中删除,让用task.dolast代替,但这并不影响我构建版本啊?继续往下看
这个错误感觉有点意思,可能是病灶的根源,仔细一看,确实,经过几分钟仔细研究,终于知道了:
因为本地安装jdk的时候顺手配置了jre,android studio是内置jre的,所以用ide编译的时候,没有任何问题,但是使用gradlew命令,往壳工程push的时候就出错了,原因就是俩个jre环境冲突了,这个锅暂时让as3.1.3来背吧,知道了根源,解决简单了;
解决方案:
1、我首先去把as的jre配置地方改成系统的,发现,改不了,放弃...
2.as不让改,还不能改自己的么,改本地的环境变量,把java_home的jre换成as的jre地址,
结果,编译的特别丝滑...
问题解决了,但是总觉得怪怪了,因为本地jre环境被改了,不舒服,哈哈,原因很简单啊,本地jdk以后升级就不行了,第二种方法只是暂时解决了,并不完美,所以还得再想想...
终极解决:
编写了一个脚本文件,主要作用有俩个,第一是临时替换本地jre的地址,指向到as的。第二是直接编译,然后push;
脚本如下:
export JAVA_HOME=E:/Android_Studio/android-studio-ide-171.4443003-windows/android-
studio/jre
echo "start gradle....."
./gradlew pushPlugin
echo "gradle end!!!"
ps:把地址换成自己as的jre地址就可以,注意分隔符的方向
运行编译,完美编译,丝滑...