Android 创建画布时的画笔和ProGuard问题

Android 创建画布时的画笔和ProGuard问题,android,proguard,samsung-mobile-sdk,Android,Proguard,Samsung Mobile Sdk,我遇到了一个问题w/S Pen SDK v2.3和ProGuard v4.9,其中未签名的APK允许我使用整个画布/便笺,而签名的APK仅允许我访问部分便笺-便笺的一半,虽然可见,但不允许我写入 我在proguard配置上玩了很多,但我没有运气。我试着用一个简单的S笔项目创建一个签名的APK,我可以让它按预期工作。但是,我的包中一定有什么东西阻止我完全访问便笺 这是我的proguard.cfg: -optimizations !code/simplification/arithmetic,!fi

我遇到了一个问题w/S Pen SDK v2.3和ProGuard v4.9,其中未签名的APK允许我使用整个画布/便笺,而签名的APK仅允许我访问部分便笺-便笺的一半,虽然可见,但不允许我写入

我在proguard配置上玩了很多,但我没有运气。我试着用一个简单的S笔项目创建一个签名的APK,我可以让它按预期工作。但是,我的包中一定有什么东西阻止我完全访问便笺

这是我的proguard.cfg:

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

-dontwarn com.google.common.**
-dontwarn org.apache.commons.*
-dontwarn org.scribe.services.*
-dontwarn com.fasterxml.jackson.databind.**
#after updating Android Support Library to rev.18
-dontwarn android.support.v4.**

# Activities, services and broadcast receivers are specified in the manifest file so they won't be automatically included
-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 public class com.crittercism.**

# Hold onto the mapping.text file, it can be used to unobfuscate stack traces in the developer console using the retrace tool
-printmapping mapping.txt

-keep public class * extends android.support.v4.app.Fragment {
    *;
}
-keep public class * extends android.widget.FrameLayout {
    *;
}
-keep public class * extends android.view.View {
    *;
}
-keep public class com.mypackage.fragments.VideoNoteFragment {
    public protected *; 
}

-keep public class com.mypackage.ui.NotesView {
    public protected *;
}

#suggestions from SPen Engineering team
-keep public interface *$* {
    public *;
}

#for SPen
-keep public class com.samsung.spensdk.* {
    public protected *;
}

-keep public class com.samsung.spensdk.applistener.* {
    public protected *;
}

-keep public class com.samsung.samm.common.* {
    public protected *;
}

-keep public class com.samsung.spen.lib.image.* {
    public protected *;
}

-keep public class com.samsung.spen.lib.input.* {
    public protected *;
}

-keep public class com.samsung.spen.lib.gesture.* {
    public protected *;
}

-keep public class com.samsung.spen.settings.* {
    public protected *;
}

# Also keep - Enumerations. Keep the special static methods that
# are required in enumeration classes.
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

# Custom view components might be accessed from your layout files
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

# event handlers can be specified in the layout files e.g. android:onClick="nextButton_onClick"
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

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

-keepclassmembers public class com.crittercism.* {
    *;
}

-keepclassmembers public class com.fasterxml.jackson.** { 
    *; 
}

#pojo
-keep class com.mypackage.data.** {
    void set*(***);
    void set*(int, ***);

    boolean is*(); 
    boolean is*(int);

    *** get*();
    *** get*(int);
}

-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-优化!代码/简化/算术,!字段/*,!类/合并/*
-优化过程5
-dontusemixedcaseclassnames
-DontskipnonPublicLibraryClass
-dontskipnonpubliclibraryclassmembers
-不要翻转
-冗长的
-dontwarn com.google.common**
-dontwarn org.apache.commons*
-dontwarn org.scribe.services*
-dontwarn com.fasterxml.jackson.databind**
#将Android支持库更新为rev.18后
-dontwarn android.support.v4**
#活动、服务和广播接收器在清单文件中指定,因此不会自动包含它们
-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.app.backup.BackupAgentHelper
-keep public class*扩展了android.preference.preference
-保持公共类com.android.vending.licensing.ILicensingService
-保持公共类com.critercism**
#保留mapping.text文件,可以使用retrace工具在开发人员控制台中消除堆栈跟踪的模糊
-printmapping.txt
-keep public class*扩展了android.support.v4.app.Fragment{
*;
}
-keep public class*扩展了android.widget.FrameLayout{
*;
}
-keep public class*扩展了android.view.view{
*;
}
-保留公共类com.mypackage.fragments.VideoNoteFragment{
受公众保护*;
}
-保持公共类com.mypackage.ui.NotesView{
受公众保护*;
}
#SPen工程团队的建议
-保持公共接口*$*{
公众*;
}
#斯宾
-保持公共类com.samsung.spensdk.*{
受公众保护*;
}
-保持公共类com.samsung.spensdk.applistener.*{
受公众保护*;
}
-保持公共类com.samsung.samm.common。*{
受公众保护*;
}
-保留公共类com.samsung.spen.lib.image。*{
受公众保护*;
}
-保留公共类com.samsung.spen.lib.input。*{
受公众保护*;
}
-保持公共类com.samsung.spen.lib.signature.*{
受公众保护*;
}
-保持公共类com.samsung.spen.settings.*{
受公众保护*;
}
#还保留-枚举。保持特殊的静态方法
#在枚举类中是必需的。
-keepclassmembers枚举*{
公共静态**[]值();
公共静态**valueOf(java.lang.String);
}
#保留名称-本机方法名称。保留所有本机类/方法名称。
-保留类成员,允许收缩类*{
本地人;
}
-KeepClassSwithMemberNames类*{
本地人;
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
#可以从布局文件访问自定义视图组件
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
#可以在布局文件中指定事件处理程序,例如android:onClick=“nextButton\u onClick”
-keepclassmembers类*扩展了android.app.Activity{
public void*(android.view.view);
}
-keep class*实现android.os.Parcelable{
公开静态最终android.os.Parcelable$Creator*;
}
-keepclassmembers公共类com.critercism.*{
*;
}
-keepclassmembers公共类com.fasterxml.jackson.*{
*; 
}
#波乔
-保留com.mypackage.data类。**{
无效集*(***);
无效集*(整数,***);
布尔值是*();
布尔值为*(int);
***得到*();
***获取*(int);
}
-重命名SourceFileAttribute源文件
-keepattributes异常、内部类、签名、已弃用、,
SourceFile,LineNumberTable,*注释*,封闭方法
这是画布的屏幕截图,其中右半部分不可写:


谢谢

归结为如下修改proguard设置:

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

#prints out which classes exactly will be preserved, so we know for sure we're getting what we want
-printseeds

-dontwarn com.google.common.**
-dontwarn org.apache.commons.*   
-dontwarn com.samsung.**
-dontwarn org.scribe.services.*
-dontwarn com.fasterxml.jackson.databind.**

# Activities, services and broadcast receivers are specified in the manifest file so they won't be automatically included
-keep public class com.android.vending.licensing.ILicensingService
-keep public class com.crittercism.**

# Hold onto the mapping.text file, it can be used to unobfuscate stack traces in the developer console using the retrace tool
-printmapping mapping.txt

# Also keep - Enumerations. Keep the special static methods that
# are required in enumeration classes.
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# event handlers can be specified in the layout files e.g. android:onClick="nextButton_onClick"
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers public class com.crittercism.* {
    *;
}

-keepclassmembers public class com.fasterxml.jackson.** {
       *;
}

-keep class com.mypackage.data.** {
    void set*(***);
    void set*(int, ***);

    boolean is*();
    boolean is*(int);

    *** get*();
    *** get*(int);
}

-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep class com.samsung.samm.** { *; }
-keep class com.samsung.sdraw.** { *; }
-keep class com.samsung.spen.** { *; }
-keep class com.samsung.spensdk.** { *; }
-libraryjars libs/libspen23.jar