通常,使用-keep排除类可以防止类被混淆但是它也可以防止它被缩小。是否可以定义一个proguard-project.txt来缩小除使用-keep排除的类之外的所有类,但也仅混淆类的特定子集?目的是使用混淆器来保持低于android65k方法限制,同时也仅在APK中混淆第一方代码。谢谢 最佳答案 是的,您可以将修饰符allowshrinking添加到应该仅应用于混淆(和优化)步骤的-keep选项。例如:-keep,allowshrinkingclasscom.example.SomeClass如果指定的类在缩小步骤中未使用,则可能会
我注意到有些情况下您需要在/etc/udev/rules.d/51-android.rules中添加一些供应商ID和产品ID。例如要添加的行是这样的:SUBSYSTEM=="usb",ATTR{idVendor}=="05c6",ATTR{idProduct}=="9025",MODE="0666",OWNER=""同样,只需添加以下行即可编辑~/.android/adb_usb.ini:0x05c6;0x9025这些指令是否在做同样的事情?另外,当我们运行命令时:安卓更新adbadb_usb.ini是全新生成的,之前所做的更改将被覆盖。~/.android/adb_usb.ini到底
有-keepclasscom.actionbarsherlock.**{*;}在我的混淆器配置中。正如Actionbarsherlock的建议(参见http://actionbarsherlock.com/faq.html)。但只有在添加之后-keeppublicclass*extendscom.actionbarsherlock.app.SherlockFragment保留了扩展SherlockFragment的类,因此我能够使用Fragments。为什么? 最佳答案 假设您有以下fragment声明,用于xml布局:public
我有一个proguard.cfg包含多个语句的文件,包括优化传递和日志抑制,如:-assumenosideeffectsclassandroid.util.Log{*;}-assumenosideeffectsclasscom.badlogic.gdx.Application{publicstaticvoiddebug(...);publicstaticvoiderror(...);publicstaticvoidlog(...);}调用Log.*在最终输出的APK文件中被正确删除。但gdx日志调用仍在代码中。例如,我仍然可以在输出中看到类似的内容:Gdx.app.debug("deb
Linux上的gradle1.10在CLI上./gradlew干净./gradlewassembleRelease标准输出错误...Note:therewere2referencestounknownclasses.Youshouldcheckyourconfigurationfortypos.(http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)Note:therewere5unresolveddynamicreferencestoclassesorinterfaces.Youshouldc
我在使用Proguard时遇到RxJava(1.1.0)的问题。我没有更改RxJava版本及其.pro文件,但是在更新OkHttp之后,我无法使用Proguard进行编译,因为我有关于sun.misc.Unsafe不存在。rxJava.pro-keepclassrx.schedulers.Schedulers{publicstatic;}-keepclassrx.schedulers.ImmediateScheduler{public;}-keepclassrx.schedulers.TestScheduler{public;}-keepclassrx.schedulers.Sched
TL;DR:在启用混淆器的情况下,当使用反射时,我的属性看起来是私有(private)的、不可为空的并且没有注释,尽管混淆器配置应该保留所有这些属性。我有一些具有公共(public)属性的简单数据类,可用作我的Android应用程序中的数据模型。稍后,在对所述类进行通用[反]序列化时,我会像这样过滤属性列表:valproperties=instance::class.memberProperties.filter{it.visibility==KVisibility.PUBLIC}//&&someotherconditions,unrelatedhere.filterIsInstanc
我正在尝试将ProGuard与Android一起使用。我发现了几个ProGuard脚本可供使用,以下是一个示例(我发现了其他几个相同或非常相似的脚本)。但是,当我尝试使用此脚本运行ProGuard时,出现错误:“在';'之前期望java类型在文件的第23行......”我是ProGuard的新手。有人可以解释这里出了什么问题谢谢。-injarsbin(!.svn/**)-outjarsobfuscated-libraryjarsC:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar
如果我直接从Eclipse启动我的应用程序,我可以从EclipseDDMS的角度轻松生成一个HPROF文件:但是,如果我创建一个发布版本(使用Proguard),我的进程不会在DDMS中列出,所以我无法选择它。谁能给出从任意应用程序/进程生成HPROF的运行步骤列表?如果不可能,您能否解释启用它的选项(因为我控制我的发布版本的生成)?在root手机上运行的adb命令或shell命令列表会很棒(例如,如果需要用于启动应用程序的自定义命令)。 最佳答案 Proguard不是应用程序的发布版本未在DDMS中列出的原因。有一个debugga
自从在启用ProGuard的情况下构建我的应用程序的发布版本后,我的绘图样式被重置为默认值,并且我在Logcat中看到许多警告,通知我不支持的参数:ErrorinflatingXML:Setterforfield"[...]"doesnotexist.我已经确定这是来自AndroidPlot的配置器,但还没有找到该项目的任何官方ProGuard配置。 最佳答案 AndroidPlot设置配置参数的机制在很大程度上依赖于反射,鉴于此,我认为尝试混淆此库中的任何内容都是无用的:-keepclasscom.androidplot.**{*