2016年1月14日木曜日

[安藤]android studio gradle builder finished with non-zero exit value 1 的魔咒

之前有嘗試要把sdk版本升級到20以上,但是遇到了gradle builder 的bug。

持續在使用的
android.packagingOptions {
    exclude 'META-INF/DEPENDENCIES'       
    exclude 'META-INF/NOTICE'       
    exclude 'META-INF/LICENSE'        
    exclude 'META-INF/LICENSE.txt'       
    exclude 'META-INF/NOTICE.txt'   
}
解決apache 裡面的幾個jar的duplicatefileexception的方法變成無效。目前尚無解決方案。
因此持續停留在19版。最近又試了一下升級,問題依然存在。
因為到了23版都還不修正,猜測是不打算修了要硬逼大家回去用httpurlConnection。


因為擔心版本越離越遠,哪天無法compile的話就慘了。
於是下定決心要把整個apache http溝通的部分全部修成native api。
好不容易修好要開始debug,更新sdk版本為23.0.1版後,又遇到gradle builder bug。

不知原因的,compiler所有檔案全部ok,但是在製作debug/run的apk的時候出現





Error:Execution failed for task ':app:dexDebug'.
>com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:
Process 'command 'java'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

的問題。gradle還很好心的提醒可以加參數看debug print。
好了,第一步是要在android studio的哪裡加參數?依然是查google...
結果是加在這裡:

加了之後發現資料還是不足。試了幾小時之後突然想到降版本看看。
降到22.0.1之後發現訊息出來了。原來資料不足是sdk的bug... 這真的太扯... Orz
訊息如下:
最後確定是此問題:


Caused by: java.lang.NullPointerException
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:87)
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:75)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:271)
    ... 26 more
...while processing <init> (Ljp/co/hogehoge/HogeActivity;)V
...while processing jp/co/hogehoge/HogeActivity$1.class

參考網站
http://qiita.com/developerwaiwai/items/0894b5c450b337a236ed
,解法真的是令人吐血。不過這應該是c語言工程師留下來的積弊... (在下就是)
if (true) -> if (Boolean.TRUE)
if (false) -> if (Boolean.FALSE)

這真的是令人無法接受的bug...   改完之後順利完成apk製作。

0 件のコメント:

コメントを投稿