Запутывающее приложение для Android с помощью CORBA - PullRequest
1 голос
/ 25 марта 2011

Так получилось, что я использую интерфейсы jacorb.jar и CORBA в своем приложении для Android. И когда я пытаюсь запутать код с помощью 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?

1 Ответ

2 голосов
/ 26 марта 2011

ЧФР. Руководство по ProGuard> Устранение неполадок> Предупреждение: не удается найти суперкласс или интерфейс.

Похоже, что Jacorb зависит от JGSS, который не является частью среды выполнения Android. Теоретически, JGSS должен быть указан как пакет библиотеки. Однако, поскольку ваше приложение уже работает без JGSS, справедливо предположить, что эта часть кода никогда не используется. Затем вы можете отключить предупреждения:

-dontwarn org.ietf.jgss.**

ProGuard больше не будет жаловаться на пропущенные классы и приступит к обработке кода. Сводка в выводе вашей консоли предполагает, что есть много классов, которые, вероятно, похожи.

...