因為項目為插件工程,每次編譯需要使用“./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.
image.png
一臉懵逼,完全看不懂....
按照提示嘗試找找錯誤原因,然后一頓操作,猛如虎:
./gradlew --stacktrace
./gradlew --info
./gradlew --scan
...
“./gradlew --stacktrace”,發(fā)現(xiàn)了詳細點的異常信息,如下:
image.png
看著就暈,哈哈,這個只是煙霧彈,主要說的是task.leftshift方法已經被棄用了,并計劃在Gradle 5.0中刪除,讓用task.dolast代替,但這并不影響我構建版本啊?繼續(xù)往下看
image.png
這個錯誤感覺有點意思,可能是病灶的根源,仔細一看,確實,經過幾分鐘仔細研究,終于知道了:
因為本地安裝jdk的時候順手配置了jre,android studio是內置jre的,所以用ide編譯的時候,沒有任何問題,但是使用gradlew命令,往殼工程push的時候就出錯了,原因就是倆個jre環(huán)境沖突了,這個鍋暫時讓as3.1.3來背吧,知道了根源,解決簡單了;
解決方案:
1、我首先去把as的jre配置地方改成系統(tǒng)的,發(fā)現(xiàn),改不了,放棄...
image.png
2.as不讓改,還不能改自己的么,改本地的環(huán)境變量,把java_home的jre換成as的jre地址,
結果,編譯的特別絲滑...
image.png
問題解決了,但是總覺得怪怪了,因為本地jre環(huán)境被改了,不舒服,哈哈,原因很簡單啊,本地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地址就可以,注意分隔符的方向
運行編譯,完美編譯,絲滑...