??這兩天遇到了一個AS編譯過程中報Exception的問題:
...//省略
:app:mergeDebugResources
Exception in thread "png-cruncher_5" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(AaptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation(QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:206)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_10" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(AaptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation(QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:206)
at java.lang.Thread.run(Thread.java:745)
...//省略
??解決這個問題花了我一天時間,網上根本找不到解決方案,按照網上提示的設置環境變量“SLAVE_AAPT_TIMEOUT”,延長超時的時間、更改build-tools的版本、更新build-tools、升級AS、關掉殺毒軟件都不管用。
??最后只好結合編譯時的日志進行分析,肯定是在編譯時打包資源時出了問題,這就涉及到aapt打包資源的問題,所以最終還是懷疑到了build-tools上面,因為aapt.exe這個文件就在每個版本的build-tools文件夾下,但之前更新過build-tools、更改過build-tools的版本并不管用,再結合網上提示有可能是殺毒軟件的問題,想到是不是殺毒軟件將build-tools中的文件標記位病毒導致的,最后找同事要了一份他電腦上的build-tools,對比發現里面的很多文件內容的確不同,拷貝過來,重新編譯,成功!!!
??這是一個很簡單的問題,可解決這個問題的方式出了問題,導致浪費了大把時間,如果早先就自己分析,而不是直接在網上去找答案,可能解決起來會更快。但也不盡然,對于這種問題排除法、調試、二分法這些都不管用,只能一個一個地去試,并且根據自己的經驗分析判斷才能夠快速解決。