相关疑难解决方法(0)

使用proguard的Android混淆应用程序会混淆库罐 - 或者是它?

我刚开始使用Proguard,所以我可能会犯一个新手的错误.我有一个应用程序,在我运行发布版本(使用Proguard进行混淆)后,它很快就崩溃了.我相信我已经将它缩小到这样一个事实,即它似乎混淆了我的参考库.在我的例子中,我的参考库用于定义我用于使用Google Protobuffers与其他设备通信的消息类.我正在使用,ant释放.我的proguard配置是:

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

-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

-keepclasseswithmembernames class * 
 {
    native <methods>;
 }

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

-keepclasseswithmembernames class * 
 {
    public <init>(android.content.Context, android.util.AttributeSet, int);
 } …
Run Code Online (Sandbox Code Playgroud)

android proguard

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

Android - Proguard重复zip条目错误

我想在一个使用android库项目android应用程序中使用proguard ,我收到以下错误:

java.io.IOException: Can't write 
    [/private/var/folders/Pg/PgUpPJQ-E5qxL7jX6kpdCE+++TI/-Tmp-/android_3140050575281008652.jar] 
    (Can't read [proguard.ClassPathEntry@1f8d244] 
    (Duplicate zip entry 
    [be.class == android_144638064543155619.jar:com/comp/dp/library/R$anim.class]))
at proguard.OutputWriter.writeOutput(OutputWriter.java:224)
at proguard.OutputWriter.execute(OutputWriter.java:120)
at proguard.ProGuard.writeOutput(ProGuard.java:391)
at proguard.ProGuard.execute(ProGuard.java:152)
at proguard.ProGuard.main(ProGuard.java:499)
Run Code Online (Sandbox Code Playgroud)

我的proguard.cfg文件就是这个,还有一些-libraryjars引用了rt.jar几个其他依赖库.

我的猜测是这个问题与使用Library Project有关,而proguard正在尝试两次处理来自库项目的条目.但我不确定应该用哪种方法来解决这个问题.

任何建议/方向都非常感谢.

更新1: 通过删除-injars bin/classes我能够解决这个问题.我的猜测是因为proguard处理库项目和应用程序项目.class库项目的文件被处理了两次.一旦进入库项目的bin/classes文件夹,另一次进入应用程序项目的bin/classes文件夹.

android proguard

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

Android Proguard重复定义

我正在尝试将第三方库(JmDNS)添加到我的Android项目中.

我在基础项目目录下创建了一个文件夹'libs',并将jar文件放在目录中.

当我尝试使用Ant(ant release)构建项目时,我收到了一个'重复定义'的注意事项,看起来是JmDNS jar文件中的每个类.

....
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Canceler]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.DNSStateTask]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Prober]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Renewer]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.package-info]
[proguard] Note: duplicate definition of library class [javax.jmdns.package-info]
[proguard] Note: there were 357 duplicate class definitions.
Run Code Online (Sandbox Code Playgroud)

构建也失败,出现以下错误:

BUILD FAILED
/path/Tools/ant-android-scala/build-scala.xml:183: Can't write [/path/bin/projectname-debug-shrinked.jar] (Can't read [/path/projectname/libs/jmdns.jar(;;;;!META-INF/MANIFEST.MF,!library.properties)] (Duplicate zip entry [jmdns.jar:javax/jmdns/JmDNS$Delegate.class]))
Run Code Online (Sandbox Code Playgroud)

我已经确保jar文件只包含一次,并且没有其他方法可以在项目的任何位置包含重复的源文件.

为什么Proguard会抱怨重复的定义呢?

android proguard

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

Android Proguard构建Duplicate Zip

在我的Android应用程序中,我在libs文件夹中有多个第三方库

ex -: httpcore-4.2.4.jar , httpmime-4.2.5.jar,twitter4j-core-4.0.1.jar
Run Code Online (Sandbox Code Playgroud)

这些库没有重复,我很确定,但是当我创建proguard版本时,我得到了这个错误

(Duplicate zip entry [twitter4j-core-4.0.1.jar:META-INF/MANIFEST.MF])
.... (This error occurs for all of the library(libs)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我试着用这个链接来解决,我尝试了它的每一个选项,但没有运气,

Proguard警告"无法写入资源[META-INF/MANIFEST.MF](重复的zip条目)"

有没有办法在输入jar上指定过滤器

android proguard

7
推荐指数
1
解决办法
990
查看次数

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

首先我知道stackoverflow中已经存在这个问题,但是我无法解决它,尽管我尝试了不使用-injar、使用packagingOptions等建议

我知道这个版本会起作用,但我喜欢干净的构建。当我生成签名的 apk 时。项目清理后,我收到这些错误:

Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [joda-time-2.8.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [joda-time-2.8.1.jar:META-INF/NOTICE.txt])
Run Code Online (Sandbox Code Playgroud)

有时代替 joda-time-2.8.1.jar 有 commons-collections4-4.0.jar (相同的 .readme, licence, notice)警告。

我尝试排除那些带有包装选项的人,但它不起作用。

这是我的模块的 build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude '.readme'
    }

    defaultConfig {
        applicationId 'com.example.myapp'
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName '0.1'
    }

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

android proguard android-proguard

5
推荐指数
1
解决办法
7138
查看次数

(重复的zip条目[coolLib.jar:{pkg} /BuildConfig.class]))

我在Android Studio 2.3.0 beta4中有一个Android项目,它依赖于库项目CoolLib.

CoolLib的源文件位于libs文件夹中的jar文件coolLib.jar中.coolLib.jar包含文件{pkg} /BuildConfig.class.

当我尝试在Android API-22 +的设备/模拟器中构建和运行项目时,它运行得很好但是当我尝试在API VERSION <22的设备/模拟器上执行相同操作时,Android Studio 无法使用例外 -

警告:处理任务java.io.IOException时出现异常:无法写入[D:\ AndroidStudioProjects\CoolProject\app\build\intermediates\transforms\proguard\debug\jars\3\1f\main.jar](不能阅读[D:\ AndroidStudioProjects\CoolProject\CoolLib\build\intermediates\bundles\default\libs\coolLib.jar(;;;;;;**.class)](重复的zip条目[coolLib.jar:{pkg}/BuildConfig.class])):app:transformClassesAndResourcesWithProguardForDebug FAILED

项目的build.gradle包含以下版本的支持lib等.--

ext {
supportLibVer = '25.1.1'
playServiceVer = '10.0.1'

buildToolsVer = "25.0.2"

compileSdkVer = 25
targetSdkVer = 25
minSdkVer = 16
}


dependencies {
compile files('libs/FLurry_3.2.2.jar')
compile files('libs/jxl-2.6.12.jar')

compile project(':CoolLib')

compile files('libs/gcm.jar')
compile "com.google.android.gms:play-services-ads:$playServiceVer"
compile "com.android.support:appcompat-v7:$supportLibVer"
compile "com.android.support:design:$supportLibVer"
compile "com.android.support:cardview-v7:$supportLibVer"
compile "com.android.support:support-v13:$supportLibVer"
compile 'com.github.bumptech.glide:glide:3.7.0'
}
Run Code Online (Sandbox Code Playgroud)

android android-studio build.gradle android-proguard

5
推荐指数
1
解决办法
1884
查看次数