昨天想要給Murphy同學編譯一個Andorid版本的工程,但我本機沒有Android SDK,於是安裝了Murphy發給我的安裝包,並升級設置,結果在發布的最後出現了如下錯誤:
Error building Player: Exception: android (invokation failed)
ERROR: unknown error
cmd:android list target -c
stdout;
stderr:
Exception in thread "main" java.lang.NullPointerException at SDKMain.main(SDKMain.java:62)
一時不知道為何,以為當前系統的jre不符合要求,於是去下載了最新的jre安裝,依然不可以,後來去unity的論壇搜到了很多遇到該情況的帖子,按照其中一篇的方法最終解決了問題。原文地址:http://forum.unity3d.com/threads/176737-unknown-error-when-building-simple-scene。
大體意思是說:
從Android SDK r22開始,基於現有的“platform-tools”組件,又增加了一個新的編譯工具SDK組件,以此來降低編譯工具和IDE之間的版本耦合性,這樣一來,以後升級SDK,就不需要IDE跟著一起升級。詳見官方說明:http://developer.android.com/tools/sdk/tools-notes.html。
如果你同時擁有r21和r22,那麼可以發現“platform_tools”目錄下內容的區別:
Android r21 platform-tools content:
aapt.exe
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
aidl.exe
api
dexdump.exe
dx.bat
fastboot.exe
lib
llvm-rs-cc.exe
NOTICE.txt
renderscript
source.properties
Android r22 platform-tools content:
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
api
fastboot.exe
NOTICE.txt
source.properties
所以正是因為目錄結構的和系統的改變,影響了當前Unity版本編譯處理,當然了,也許改變還不止這些,所以當前最簡單的解決辦法有兩個:
1:重新安裝r21版本;
2:如果你堅持想用當前的r22版本,那麼
copy:
$(android-sdk)/build-tools/17.0.0/ <-- 這個目錄的內容是api17的編譯工具
to:
$(android-sdk)/platform-tools/
方法2不是最好的和徹底的解決辦法,但經本人試驗,確實可行。
That's all.
希望以上能有所幫助,同時感謝親愛的Murphy同學的幫助。
本文轉載自:http://www.th7.cn/Program/Android/201305/138526.shtml