11

いくつかの質問がありますが、私にとって有効な解決策はありません。使いやすいと思いました。私はちょうどいっぱいのコンソールを取得します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
4

5 に答える 5

10

構成に追加します。

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

追加しても問題が解決しない場合:

-dontwarn org.apache.** tag

または、警告を無視するだけです (依存関係が満たされていないため、実行時にアプリがクラッシュする可能性があるため、強くお勧めしません)。

-ignorewarnings 

このドキュメントが役に立ちます: http://proguard.sourceforge.net/manual/troubleshooting.html

于 2012-09-25T12:57:54.590 に答える
6

次のようなエラーがある場合:

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'
        }
    } 

または、たとえば多くのファイルを追加する場合は、次のリポジトリを使用し、 すべてのファイルを追加します。

 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

于 2015-09-24T07:51:12.987 に答える
1

私が覚えている限りでは、Jar ファイルを間違った方法で参照したということです。

また、ユーザー名 (ME) にスペースが含まれている場合、C:/Users/ME/android-sdks/tools/proguard/proguard-android.txt:proguard-project.txtProguard は「おかしな」方法で壊れます。android-sdk を移動してC:\android-sdk、頭痛の種から解放されます。

于 2012-09-25T12:54:45.097 に答える
0

ライブラリ プロジェクトを使用している場合は、ライブラリの proguard 構成に -libraryjars を追加する必要があります。

于 2014-01-21T01:57:21.140 に答える