标签: android-proguard

Android/java:从ProGuard到R8的过渡/迁移?

我想知道如何从ProGuard过渡到R8.

我应该从Gradle文件中删除与Proguard相关的行并android.enableR8 = true改为添加行吗?

谢谢.

obfuscation android proguard android-proguard r8

24
推荐指数
1
解决办法
9260
查看次数

在启用Proguard的情况下将Play服务从8.1更新到8.3

我尝试将播放服务更新为8.3.这是我改变的:

在根gradle文件中:

dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0-beta1'
    classpath 'com.google.gms:google-services:1.5.0-beta2'
}
Run Code Online (Sandbox Code Playgroud)

并在app gradle文件中:

compile 'com.google.android.gms:play-services-maps:8.3.0'
compile 'com.google.android.gms:play-services-location:8.3.0'
compile 'com.google.android.gms:play-services-base:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
compile 'com.google.android.gms:play-services-appinvite:8.3.0'
compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-appindexing:8.3.0'
Run Code Online (Sandbox Code Playgroud)

它正在构建正常,但它在启动时崩溃,具有以下堆栈跟踪:

11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.android.gms.measurement.AppMeasurementContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.measurement.AppMeasurementContentProvider" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/app.example.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/app.example.debug-1/lib/arm, /vendor/lib, /system/lib]]
    11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime:     at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
    11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime:     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
    11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime:     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
    11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime:     at android.app.ActivityThread.-wrap1(ActivityThread.java)
    11-06 17:30:17.460 2895-2895/app.example.debug …
Run Code Online (Sandbox Code Playgroud)

android google-play-services android-proguard

22
推荐指数
1
解决办法
7613
查看次数

ConsumerProguardFiles vs ProguardFiles

我试图构建一个包含La带有proguard 的库模块的应用程序,我注意到该库没有被混淆.试图理解为什么.在这个时刻,这是我的buildType:

release {
 minifyEnabled false
 useProguard true
 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} 
Run Code Online (Sandbox Code Playgroud)

经过一些搜索后,我遇到了ConsumerProguardFiles函数,该函数指出:

ProGuard规则文件将包含在已发布的AAR中.

然后,任何使用AAR的应用程序项目都会使用这些proguard规则文件(如果启用了ProGuard).

这允许AAR指定收缩或混淆排除规则.

这仅适用于Library项目.这在Application项目中被忽略.

现在buildType,我的库La中有以下内容:

release {
 minifyEnabled false
 useProguard true
 consumerProguardFiles 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)

现在我的库La正在使用它的proguard规则,库代码被混淆了.

所以我的问题是:

1)这种不同行为的原因是什么.为什么ProguardFiles不会混淆库的规则,而是忽略它?

2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并.这个假设是否正确?

3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles.正确?

感谢您抽出宝贵的时间阅读!

android android-gradle-plugin android-proguard

21
推荐指数
1
解决办法
7933
查看次数

如何升级ProGuard for Android?

我曾经Android SDK Manager下载过最新版本的Android SDK.但ProGuard没有更新并保持4.7版本.

是否有必要ProGuard从其网站手动下载并解压缩到\android-sdk\tools\proguard

或者Android SDK会不会使用4.7版本?这种方式已经有4年了.

android android-proguard

21
推荐指数
2
解决办法
8761
查看次数

更新Android Studio 3.1后,我会在每次构建后收到这些警告

Android发布警告

  1. 从1方法中删除无效的本地信息.

从1方法中删除无效的本地信息.消息{kind = WARNING,text =从1方法中删除无效的本地信息.,sources = [未知源文件],工具名称= Optional.of(D8)}

  1. InnerClass注释缺少相应的EnclosingMember注释.这样的InnerClass注释被忽略.

InnerClass注释缺少相应的EnclosingMember注释.这样的InnerClass注释被忽略.消息{kind = WARNING,text = InnerClass注释缺少相应的EnclosingMember注释.这样的InnerClass注释被忽略.,sources = [未知源文件],工具名称= Optional.of(D8)}

  1. org.w3c.dom.bootstrap.DOMImplementationRegistry找不到类型,它是默认或静态接口方法的必需品void com.fasterxml.jackson.databind.ext.DOMSerializer.<init>()

org.w3c.dom.bootstrap.DOMImplementationRegistry未找到类型,默认或静态接口方法需要void com.fasterxml.jackson.databind.ext.DOMSerializer.<init>() 消息{kind = WARNING,text = Type org.w3c.dom.bootstrap.DOMImplementationRegistry未找到,它是默认或静态接口方法desugaring void com.fasterxml.jackson.databind.ext.DOMSerializer.<init>(),sources = [/ Users/deepanshusinha/git] /OpenApp/OpenAppForce/app/build/intermediates/transforms/androidGradleClassShrinker/beta/debug/4/com/fasterxml/jackson/databind/ext/DOMSerializer.class],工具名称= Optional.of(D8)}

Java编译器警告

  1. 规则`-keep public class*extends java.lang.annotation.Annotation {

警告:规则`-keep public class*extends java.lang.annotation.Annotation {

对于java编译器警告,我试图修复我的proguard文件.这是我的proguard文件.让我知道如果我做错了什么.

#Start Dto#
-keep public class co.openapp.app.data.model.* {
  *;
}
#End Dto#

#OkHttp3, Okio, Retrofit
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**

#Start Okhttp#
-dontwarn java.nio.file.**
-dontwarn java.lang.invoke.**
-dontwarn …
Run Code Online (Sandbox Code Playgroud)

android compiler-warnings android-studio android-proguard android-studio-3.1

20
推荐指数
1
解决办法
1万
查看次数

Android Proguard警告:无法写入资源(重复的zip条目)

我启用了proguard并得到了:

Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-io-2.4.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-io-2.4.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-collections-3.2.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-collections-3.2.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [joda-time-2.7-no-tzdb.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [joda-time-2.7-no-tzdb.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-primitives-1.0.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/services/javax.annotation.processing.Processor] (Duplicate zip entry [icepick-processor-2.3.6.jar:META-INF/services/javax.annotation.processing.Processor])
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry …
Run Code Online (Sandbox Code Playgroud)

android android-proguard

19
推荐指数
1
解决办法
9585
查看次数

android studio中的proguard-rules.txt在哪里?

在我的演示项目中,proguard-rules.txt在Android工作室中不可用.

我一定错过了一些代码:

在此输入图像描述

我在哪里可以找到proguard-rules.txt文件?

我想添加proguard规则

任何帮助都是适当的

谢谢

android android-studio android-proguard

19
推荐指数
3
解决办法
2万
查看次数

仅使用Proguard:无法初始化DaoConfig => ArrayIndexOutOfBoundsException

我使用以下ProGuard规则:

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { *; }
-keep class **$Properties

-keep class org.greenrobot.greendao.**
-keepclassmembers class org.greenrobot.greendao.** { *; }

# If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**

# If you do not use RxJava:
-dontwarn rx.**

启动应用程序时,我收到以下崩溃日志:

java.lang.RuntimeException: Unable to create application my.app.package.MyApplication: org.greenrobot.greendao.DaoException: Could not init DAOConfig
   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4569)
   at android.app.ActivityThread.access$1500(ActivityThread.java:148)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5272)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
Caused by: org.greenrobot.greendao.DaoException: Could not init DAOConfig
   at …

android greendao greendao-generator android-proguard

19
推荐指数
3
解决办法
1592
查看次数

Android设计支持库proguard规则

一直试图找到一些有关新设计支持库所需规则的信息,以便通过proguard.我找不到任何有关它的信息.

结束使用这些规则:

-keep class android.support.design.widget.** { *; }
-keep interface android.support.design.widget.** { *; }
-dontwarn android.support.design.**
Run Code Online (Sandbox Code Playgroud)

这些规则似乎有效,但我不确定是否有更好的规则或它是否适用于设计支持库中的所有类

android proguard android-proguard androiddesignsupport

17
推荐指数
2
解决办法
7352
查看次数

dagger android支持proguard规则

我正在使用带有Proguard的Dagger2 android-support库但由于这个错误我无法编译我的项目:

Warning:dagger.android.AndroidInjector: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.AndroidInjector$Builder: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.AndroidInjector$Factory: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.DaggerApplication: can't find referenced class com.google.errorprone.annotations.ForOverride
Warning:dagger.android.DispatchingAndroidInjector: can't find referenced class com.google.errorprone.annotations.CanIgnoreReturnValue
Warning:there were 5 unresolved references to classes or interfaces.
Run Code Online (Sandbox Code Playgroud)

我正在使用的Dagger版本是2.11.

问题是我应该为Dagger2 android-support库使用Proguard规则?

android proguard dagger dagger-2 android-proguard

17
推荐指数
1
解决办法
6555
查看次数