用CORBA混淆Android应用程序

用CORBA混淆Android应用程序,android,corba,proguard,Android,Corba,Proguard,结果我在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

结果我在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'.
My 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>;
}
-injars箱/类
-outjars bin/classes-processed.jar
-libraryjars C:/android sdk windows/platforms/android-7/android.jar
-图书馆馆藏
-不要翻转
-重新打包类“”
-允许访问修改
-优化!代码/简化/算术
-keepattributes*注释*
-DontskipnonPublicLibraryClass
-dontskipnonpubliclibraryclassmembers
-dontnote
-保留com.android.vending.billing类**
-keep public class*扩展android.app.Activity
-keep public class*扩展android.app.Application
-keep public class*扩展了android.app.Service
-keep public class*扩展了android.content.BroadcastReceiver
-keep public class*扩展了android.content.ContentProvider
-keep public class*扩展了android.view.view{
public(android.content.Context);
public(android.content.Context、android.util.AttributeSet);
public(android.content.Context,android.util.AttributeSet,int);
公共无效集*(…);
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*实现android.os.Parcelable{
静态android.os.Parcelable$Creator;
}
-keepclassmembers类**.R$*{
公共静态;
}
如何更正这些警告并生成有效的apk文件?

Cfr

Jacorb似乎依赖于JGSS,而JGSS不是Android运行时的一部分。理论上,JGSS应该指定为库包。然而,由于您的应用程序在没有JGSS的情况下已经运行良好,因此可以公平地假设这部分代码从未使用过。然后,您可以关闭警告:

-dontwarn org.ietf.jgss.**

ProGuard将不再抱怨这些丢失的类,并继续处理代码。控制台输出中的摘要表明,有许多类可能相似。

我为我的应用程序中没有实际使用的所有类添加了-dontwarn选项。但是还有另一种警告:
[proguard]警告:org.jacorb.imr.util.AddServerWindow:在org.jacorb.imr.util.AddServerWindow类中找不到引用的方法“void pack()”
这些类保存在libs/jacorb.jar中。我使用了
-keepclassswithmembers类org.jacorb.*
,但它不起作用。ProGuard手册>故障排除>警告:找不到引用的字段/方法。您是否尝试过-dontskipnonpubliclibraryclasses(在较旧版本的ProGuard中)和-dontskipnonpubliclibraryclassmembers?我尝试过单独和一起使用此选项(我在一个问题中对此进行了描述)。如果我忽略这些警告(使用
-ignorewarnings
-dontshrink
-dontoptimize
选项),应用程序服务将无法启动。谢谢你,Eric!问题解决了。这些警告并不重要。对于所有使用corba接口的类,我都使用了
-ignorewarnings
-keep
选项。模糊的应用程序工作正常。