Articles of proguard

Gradle插件v0.13.1后重复的Zip条目

我一直在使用Gradle Android插件v0.12,但我决定升级到新版本,因为我需要新function(并且改进的速度总是一个加号)。 更新到新的v0.13.1后,我继续获得“重复Zip输入”(来自Proguard),而之前一切正常。 完整的错误: java.io.IOException:无法写[/Users/…/classes-proguard/netherlands/release/classes.jar](无法读取[/Users/…/.gradle/caches/modules- 2 / files-2.1 / org.apache.commons / commons-io / 1.3.2 / b6dde38349ba9bb5e6ea6320531eae969985dae5 / commons-io-1.3.2.jar(;;;;;;!META-INF / MANIFEST.MF)](复制) zip条目[commons-io-1.3.2.jar:org / apache / commons / io / CopyUtils.class]))(之前的CopyUtils是FileUtils)。 我正在使用以下包装选项:packagingOptions { exclude ‘AndroidManifest.xml’ exclude ‘META-INF/DEPENDENCIES’ exclude ‘META-INF/notice.txt’ exclude ‘META-INF/license.txt’ exclude ‘META-INF/LICENSE.txt’ exclude ‘META-INF/NOTICE.txt’ exclude ‘META-INF/MANIFEST.MF’ exclude ‘!META-INF/MANIFEST.MF’ exclude ‘META-INF/services/javax.annotation.processing.Processor’ } 如你所知,我正在排除清单文件…… 为了测试它,我改回了版本0.12.0并且一切都再次工作,回到0.13。*它打破了(但我需要0.13。*)! 此外,我正在使用以下库: Robospice 改造 […]

Android Proguard – 如何保持仅从XML布局引用的onClick处理程序

在我的Android应用程序中,我不会在代码中创建View的on-click处理程序,但依赖于在XML布局文件中指定它的能力,如下所示: 然后让Activity中的方法如下: public void onSearchClicked( View v ) { ……..} 这意味着在我自己的代码中没有明显的参考。 当为生产版本运行Proguard时,它似乎删除了这个方法,并且点击失败。 我可以添加到我的proguard配置文件中以避免这种情况,这不会让我重命名所有这些方法吗? 我可以添加到方法的注释,并注意到proguard? 以某种方式指定从xml引用的这些types的方法? 我想我可以在代码中添加一个错误的引用,但是如果可以的话我想避免这样做,因为我不会永远记得把它放进去! 我已经查看了针对Android的proguard示例,并且看不到任何针对此特定需求的内容。

防止Proguard移除特定的drawables

在我的Android项目中,我有一些存储在res / drawable /中的图像,这些图像只能从Webview中加载的HTML文件中访问。 例如(HTML代码): 这些图像在优化过程中由Proguard从apk中删除。 有人知道保存这些文件的方法(即使它们没有直接在java代码中使用)吗?

Google Play服务v23 Proguard配置

升级到Google Play服务v23后,我在尝试在Eclipse中导出已签名的应用程序时看到此消息: Proguard returned with error code 1. See console Warning: com.google.android.gms.common.GooglePlayServicesUtil: can’t find referenced class android.content.pm.PackageInstaller Warning: com.google.android.gms.common.GooglePlayServicesUtil: can’t find referenced class android.content.pm.PackageInstaller$SessionInfo Warning: com.google.android.gms.common.GooglePlayServicesUtil: can’t find referenced class android.content.pm.PackageInstaller Warning: com.google.android.gms.common.GooglePlayServicesUtil: can’t find referenced class android.content.pm.PackageInstaller$SessionInfo Warning: com.google.android.gms.common.GooglePlayServicesUtil: can’t find referenced method ‘android.content.pm.PackageInstaller getPackageInstaller()’ in class android.content.pm.PackageManager Warning: com.google.android.gms.internal.zzif: can’t find referenced method […]

如果我启用了proguard,则无法确定任务’:app:crashlyticsStoreDeobsDebug’的依赖关系

当我在Android Studio 2中运行应用程序时出现以下错误。 Gradle tasks [:app:assembleDebug] Could not determine the dependencies of task ‘:app:crashlyticsStoreDeobsDebug’. > Task with path ‘dexDebug’ not found in project ‘:app’. BUILD FAILED 这是模块的build.gradle buildscript { repositories { maven { url ‘http://download.crashlytics.com/maven’ } maven { url “http://dl.bintray.com/populov/maven” } } dependencies { classpath ‘com.crashlytics.tools.gradle:crashlytics-gradle:1.+’ } } apply plugin: ‘com.android.application’ apply plugin: ‘crashlytics’ repositories […]

如何使用新的Android 2.0 Shrinker并设置useProguard false?

我升级到Android Studio 2.0 Beta 5.我使用的是gradle tools 2.0.0-beta5。 在Android dev blogspot网站上,有一个video解释了如何使用新的Shrinker进行调试构建(3:14) 我正在尝试使用调试buildType构建我的项目,如video中所述: debug { minifyEnabled true useProguard false } 我收到了一堆警告,然后在构建时出现此错误: Error:Execution failed for task ‘app:transformClassesWithNewClassShrinkerForMyAppNameGoesHereDebug’. Warnings found during shrinking, please use -dontwarn or -ignorewarnings to suppress them. 使用Proguard,我会在proguard项目文件中添加必要的-dontwarn。 是否有一个Shrinker项目文件,我可以添加-dontwarn语句?

为什么在我以前从未需要它时开始使用-libraryjars?

自从我将ADT从16更新到18(将Proguard的更新从4.6更新到4.8)后,Proguard的表现非常奇怪(而且不一致?)。 最新的问题是当我尝试导出签名(发布)APK时,我收到以下错误: Proguard returned with error code 1. See console Warning: com.bta.LibProj2: can’t find referenced class com.bta.R$string Warning: com.bta.MyDlg1: can’t find referenced class com.bta.R$string Warning: com.bta.MyMenu: can’t find referenced class com.bta.R$menu Warning: com.bta.R: can’t find referenced class com.bta.R$attr Warning: com.bta.R: can’t find referenced class com.bta.R$drawable Warning: com.bta.R: can’t find referenced class com.bta.R$menu Warning: com.bta.R: can’t […]

使用ProGuard混淆私有字段

我在AndroidStudio 1.2.1.1中使用ProGuard和Gradle 1.2.3。 My Gradle的发布版本配置如下: minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ shrinkResources true 我希望类的私有字段被混淆。 这是我的proguard配置文件(经过多次尝试)截至目前: -allowaccessmodification -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -repackageclasses ” -verbose […] 但在与AndroidGuard的androdd反编译后,我最终得到: private com.google.android.gms.common.api.GoogleApiClient googleApiClient; 我知道这种混淆的使用是有限的,但我希望通过ProGuard重命名googleApiClient 。 怎么办? 这是refcard 。 有没有办法与-keepclassmembernames相反?

未find库“libmaliinstr.so”

我有一个用Scala编写的Android应用程序。 当我启动它时,日志窗口中会出现以下错误消息: 08-31 13:11:10.781 5398-5398/my.app.app123 E/linker﹕ load_library(linker.cpp:759): library “libmaliinstr.so” not found 08-31 13:11:10.784 5398-5398/my.app.app123 E/﹕ appName=my.app.app123, acAppName=com.android.cts.openglperf 08-31 13:11:10.784 5398-5398/my.app.app123 E/﹕ 0 08-31 13:11:10.784 5398-5398/my.app.app123 E/﹕ appName=my.app.app123, acAppName=com.android.browser 08-31 13:11:10.784 5398-5398/my.app.app123 E/﹕ 0 它是什么意思以及如何解决它?

ProGuard中-keep和-keepclassmembers有什么区别?

我通过http://proguard.sourceforge.net/index.html#manual/usage.html阅读,但无法得到他们的分歧。 我测试了2个不同的选项并反编译结果。 两者似乎产生相同的结果。 -keep class * implements android.os.Parcelable { *; } -keepclassmembers class * implements android.os.Parcelable { *; }