1

Android アプリで jacorb.jar と CORBA インターフェースを使用するようになりました。そして、Proguard を使用してコードを難読化しようとすると、次のような多くの警告が表示されます。

    [proguard] Warning: org.jacorb.orb.standardInterceptors.SASComponentInterceptor: can't find referenced
class org.ietf.jgss.Oid

そして結果として:

 [proguard] Warning: there were 1223 unresolved references to classes or interfaces.
 [proguard]          You may need to specify additional library jars (using '-libraryjars'),
 [proguard]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
 [proguard] Warning: there were 33 unresolved references to program class member
s.
 [proguard]          Your input classes appear to be inconsistent.
 [proguard]          You may need to recompile them and try again.
 [proguard]          Alternatively, you may have to specify the options
 [proguard]          '-dontskipnonpubliclibraryclasses' and/or
 [proguard]          '-dontskipnonpubliclibraryclassmembers'.

私のproguard.cfg:

-injars      bin/classes
-outjars     bin/classes-processed.jar
-libraryjars C:/android-sdk-windows/platforms/android-7/android.jar
-libraryjars libs

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

-keep class com.android.vending.billing.**

-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 * implements android.os.Parcelable {
    static android.os.Parcelable$Creator CREATOR;
}

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

これらの警告を修正し、機能する apk ファイルをビルドするにはどうすればよいですか?

4

1 に答える 1

2

Cfr. ProGuard マニュアル > トラブルシューティング > 警告: スーパークラスまたはインターフェイスが見つかりません。

Jacorb は、Android ランタイムの一部ではない JGSS に依存しているようです。理論的には、JGSS はライブラリ パッケージとして指定する必要があります。ただし、アプリは JGSS がなくても問題なく動作するため、コードのこの部分は使用されていないと考えて間違いありません。その後、警告をオフにすることができます。

-dontwarn org.ietf.jgss.**

ProGuard は、これらの不足しているクラスについて文句を言わなくなり、コードの処理を続行します。コンソール出力の要約は、おそらく類似している多くのクラスがあることを示唆しています。

于 2011-03-25T21:59:44.513 に答える