如何为远程服务库编写proguard配置

ale*_*lex 5 eclipse android class proguard aidl

我会向其他用户支持sdk。exportjar文件对其他应用程序很有用。但实际上,我需要保护该sdk文件。我已经编写了一个proguard配置文件。

    -optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-injars libs/sdk.jar
-outjars libs/SDK.jar

# we need line numbers in our stack traces otherwise they are pretty useless
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-keep interface org.apache.** { *; }

-keepclasseswithmembernames class com.ctv.android.sdk.** {*;}

-keep class **.R$* { *; }

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

-dontwarn org.apache.**
-dontwarn android.support.v4.**

-keepclasseswithmembernames class * {
    native <methods>;
}

-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.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-keep public class * extends android.os.IInterface

-keepattributes Signature
-keepattributes *Annotation*
Run Code Online (Sandbox Code Playgroud)

com.ctv.android.sdk.P2PService:是一个远程服务com.ctv.android.sdk.IP2PService:是aidl的接口

但是,如果我在eclipse.it中将其用于另一个项目,则表明存根无法解析或不是字段..为什么?请帮我~~尽快..谢谢

ok.i解决了这个问题。两个重要问题:

1。

-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,SourceFile,LineNumberTable,*Annotation*
Run Code Online (Sandbox Code Playgroud)

内部类,这很重要

2。

-keep class com.ctv.android.sdk.IP2PService$** {
    public <fields>;
    public <methods>;
}

-keep class com.ctv.android.sdk.IP2PService$Stub.** {
    public <fields>;
    public <methods>;
}

-keep interface com.ctv.android.sdk.IP2PService$** {*;}
Run Code Online (Sandbox Code Playgroud)

就这些。