簡體   English   中英

Proguard:找不到引用的類

[英]Proguard: can't find referenced class

有幾個問題,但沒有解決方案適合我。 我認為這很容易使用。 我只是得到一個完整的控制台can't find referenced class

這是我的proguard-project.txt

-injars      bin/classes
-injars      libs
-outjars     bin/classes-processed.jar
-libraryjars C:/Users/ME/android-sdks/platforms/android-10/android.jar

-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}

-keepclassmembers class * implements android.os.Parcelable {
    static android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

和project.properties

#Proguard enabled
proguard.config=C:/Users/ME/android-sdks/tools/proguard/proguard-android.txt:proguard-project.txt

一些有警告的課程是:

org.apache.avalon.framework.logger.Logger
org.apache.log4j.Category
org.apache.log4j.Priority
org.apache.log4j.Logger
...
javax.servlet.ServletContextListener
javax.servlet.ServletContextEvent
org.w3c.dom.html.HTMLAnchorElement
org.w3c.dom.html.HTMLObjectElement
org.w3c.dom.html.HTMLTableSectionElement
org.w3c.dom.html.HTMLFrameSetElement
...
org.w3c.dom.events.DocumentEvent
org.w3c.dom.traversal.NodeFilter
...
org.w3c.dom.ranges.Range
org.w3c.dom.ranges.RangeException
...
org.w3c.dom.html.HTMLDocument

添加到您的配置:

-libraryjars org.apache.jar // name of your jars.
-libraryjars org.w3c.jar

如果它沒有幫助添加:

-dontwarn org.apache.** tag

或者只是忽略警告(非常不推薦,因為它可能導致您的應用程序在運行時因未滿足的依賴項而崩潰):

-ignorewarnings 

本文檔將為您提供幫助: http//proguard.sourceforge.net/manual/troubleshooting.html

如果您有錯誤,例如:

Warning: com.package...: can't find referenced class com.secondpackage....Classname

只需添加到您的文件proguard-android.txt:

#if it is class:
-keep class com.package.*{ *; }
#or if it is interface:
-keep interface com.package.*{ *; }
#or if it is a class that extends from any other
-keep class * extends com.example.Model
#or if you know only and of className
-keep class **Starter { *; }
#or if you want to keep only fields of classes
-keepclassmembers class com.package.** {
   *;
}

此外,如果您不想在日志中看到所有注釋:

-dontnote com.package.**

此文件名是在build Gradle中編寫的

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-android.txt'
        }
    } 

或者,如果您想要添加許多文件,例如使用以下repo並添加所有文件:

 buildTypes {
        release {
            minifyEnabled true

            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            proguardFiles fileTree(include: ['*.pro'], dir: '../libraries').asList().toArray()
        }

libraries文件夾應位於D:\\workspace\\MyProject\\libraries

從我記憶中來看,這意味着你以錯誤的方式引用了Jar文件。

此外,如果您的用戶名(ME)包含空格C:/Users/ME/android-sdks/tools/proguard/proguard-android.txt:proguard-project.txt Proguard將以“有趣”的方式打破。 將android-sdk移動到C:\\android-sdk並保存自己的頭痛。

如果您正在使用庫項目,那么應該將-libraryjars添加到庫proguard配置中

在我的情況下,Android Studio在發布版本上執行ProGuard時凍結。 我殺了它 重啟后我開始看到“找不到引用類”的警告。

解決方案: 我關閉了Android Studio,從我的項目文件夾中刪除了.gradle文件夾,然后刪除了gradle全局緩存(%USER_HOME%.gradle / caches)。 重新打開項目后,重建緩存,一切都開始重新運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM