2012-10-08 55 views
4

我在Eclipse中有一個Android庫項目(A)和Android應用程序(B)。對於這種設置,我使用Proguard,目前爲止沒有問題。現在我想將Flurry庫(.jar)添加到我的庫項目中,該項目在仿真器上的調試模式下工作正常。無法獲取庫jar以使用Android和Proguard

但是,當我想導出我的應用程序的最終簽名的apk,使用Proguard時,我得到很多「無法找到引用類...」的警告,並且apk無法創建。

一些類的有:

org.joda.time.LocalDateTime 
org.joda.time.format.DateTimeFormatter 
org.xerial.snappy.Snappy 
com.jumptap.adtag.JtAdView 
... 

好了,所以我增加了以下的proguard.cfg文件:

... 
-dontskipnonpubliclibraryclassmembers 
-libraryjars ../libproj/libs/FlurryAgent.jar 
... 
-keep public class com.flurry.android.FlurryAgent { *; } 
-keep class com.flurry.** { *; } 
-keep class org.codehaus.jackson.** { *; } 
-keep class org.apache.avro.** { *; } 
-keep interface com.flurry.** { *; } 
-keep public class org.joda.time.** { public protected *; } 
... 

但是,我仍然得到SAM錯誤:(
任何想法,我在這裏失蹤?

+1

如果我有自動構建,我會收到使用Proguard構建的問題。我不得不關閉它來發布版本。可能不相關,但值得一試... – Ifor

+0

好吧,我最終用Google Analytics取代了Flurry - 更小的JAR文件,沒有任何問題,與Proguard :) – Matthias

+0

謝謝Ifor!在將Google播放器服務添加爲庫項目之後,我一直在從Eclipse導出Proguard時遇到不可重複的構建失敗。修復:關閉自動構建;清理所有項目;建立谷歌播放服務_lib(右鍵單擊 - >生成項目),然後導出...主項目通過正常流程簽名的proguard生成。在關閉自動構建之前,我有許多奇怪的錯誤 - 缺少類錯誤,mapping.txt不完整,沒有控制檯錯誤(!)等的錯誤構建等。 – mwk

回答

0

顯然,該flurry jar有一些其他庫的可選引用(joda-time,snappy,...)。

添加-keep缺少引用的選項根本沒有幫助,因爲它只保留指定的類,但它們缺失。相反,你應該加入適當-dontwarn指令:

-dontwarn com.flurry.** 

應該忽略來自亂舞類發起任何警告。