[英]proguard hell - can't find referenced class
所以,我想發布一些軟件,但Proguard的是讓我頭疼。
當我嘗試使用 proguard 導出時,我收到很多警告,即“找不到引用的類”
例如:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
這些警告似乎與 simpleframework 相關,因此在我的 proguard 配置文件中,我添加了以下內容:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
其中pathtoprojecttolibs
是我的項目引用的 jar 的路徑。
這沒什么區別。
如果 simpleframework 引用 javax,我可以告訴 proguard 也忽略它嗎??
有任何想法嗎?
代碼中的org.simpleframework.xml.stream.StreamReader
指的是javax.xml.stream.events.XMLEvent
。 后一個類是 Java 運行時 ( rt.jar
) 的一部分,但不是 Android 運行時 ( android.jar
) 的一部分,因此 ProGuard 會警告某些內容可能已損壞。 如果您確定您的應用程序無論如何都可以工作,則可以指定
-dontwarn javax.xml.stream.events.**
ProGuard 地獄?
我的魔法鑰匙解決了我的搜索時間:將此添加到 progruard-android.txt
-dontskipnonpubliclibraryclassmembers
您應該將其包含在您的 Proguard 配置中:
-dontskipnonpubliclibraryclasses
我認為這是一個邊緣情況,但在我的情況下,我必須完全擦除我的 Jenkins proguard 上的構建文件夾,嘗試使用不再存在的舊代碼 - 以防萬一有人遇到同樣的問題。
在我的情況下,我沒有改變任何東西,警告開始顯示。 問題在於損壞的 gradle 緩存。 檢查我的另一個答案。 我與此分享,因為我花了 2 個小時才找到問題:]
將此行添加到 gradle 腳本目錄中的proguard-rules.pro
文件中:
-dontwarn package.class.name.**
其中package.class.name
是附加了 jar 文件的類名的包名。
例如:
-dontwarn com.myexternalclass.utils.**
唔。 閱讀該警告似乎您嘗試使用的庫依賴於 javax.xml.stream.events。 我認為命名空間實際上根本沒有包含在 android 中。 (見包裹索引)。
嘗試在不使用 proguard 的情況下將其部署到模擬器,看看它是否有效。 如果那個警告是准確的,我的猜測是不會的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.