标签: android-proguard

ProGuard构建失败"未解析的引用"

我一直在研究我的应用程序的最新版本,它测试得很好,但是当我发布ProGuard版本时,我会收到许多错误,主要是因为无法找到org.apache.http.*,我在项目中没有使用.我在整个项目中搜索了该文本但找不到它.我添加了一些依赖项,但没有我认为会使用HTTP.

我如何弄清楚为什么 ProGuard会抱怨并妥善解决?它说我可以用"--stacktrace选项"运行,但我无法弄清楚如何做到这一点.

我感谢任何帮助,因为我发现ProGuard常常令人困惑.

构建输出:

Warning: com.google.android.gms.internal.zzw$zza: can't find superclass or interface org.apache.http.client.methods.HttpEntityEnclosingRequestBase
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class …
Run Code Online (Sandbox Code Playgroud)

android proguard android-build android-proguard

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

Android中的transformClassesAndResourcesWithProguardForRelease'错误

嗨,我正在努力为我的项目创建发布版本.我已经通过SO/Google帮助在Progaurd上尝试了很多东西,但我仍然无法创建发布版本.

有人可以帮我这个吗?我总是遇到这个问题:

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> java.io.IOException: Please correct the above warnings first.
Run Code Online (Sandbox Code Playgroud)

这是完整的详细错误:http://justpaste.it/perror抱歉,我不得不把它作为一个链接,因为它是巨大的.

这是依赖项:

//compile fileTree(dir: 'libs', include: ['*.jar'])
 testCompile 'junit:junit:4.12'
 compile 'com.android.support:appcompat-v7:23.1.1'
 compile 'com.android.support:design:23.1.1'
 compile 'com.rengwuxian.materialedittext:library:2.1.4'
 compile 'com.squareup.picasso:picasso:2.5.2'
 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
 compile 'org.apache.httpcomponents:httpcore:4.4.1'
 compile 'com.squareup.retrofit:retrofit:1.9.0'
 compile 'com.loopj.android:android-async-http:1.4.8'
 compile 'com.android.support:cardview-v7:23.1.1'
 compile 'com.android.support:recyclerview-v7:23.1.1'
 compile project(':pageIndicator')
 compile 'com.github.neopixl:PixlUI:v1.0.6'
 compile 'com.github.bumptech.glide:glide:3.6.1'
Run Code Online (Sandbox Code Playgroud)

我的progaurd文件:

# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# …
Run Code Online (Sandbox Code Playgroud)

java android proguard android-studio android-proguard

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

启用Proguard时NullPointerExcepetion Facebook sdk v4.5.0(当尝试使用Parse库登录时)

我正在尝试使用ParseFacebookUtils库登录Facebook并且它运行良好,但是当我启用Proguard文件时,我在Facebook登录活动启动时遇到此异常:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.name/com.facebook.FacebookActivity}: java.lang.NullPointerException
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
       at android.app.ActivityThread.access$900(ActivityThread.java:175)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:146)
       at android.app.ActivityThread.main(ActivityThread.java:5602)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at java.lang.Enum$1.create(Enum.java:43)
       at java.lang.Enum$1.create(Enum.java:35)
       at libcore.util.BasicLruCache.get(BasicLruCache.java:54)
       at java.lang.Enum.getSharedConstants(Enum.java:209)
       at java.lang.Enum.valueOf(Enum.java:189)
       at com.facebook.login.LoginBehavior.valueOf(LoginBehavior.java:26)
       at com.facebook.login.LoginClient$Request.(LoginClient.java)
       at com.facebook.login.LoginClient$Request.(LoginClient.java)
       at com.facebook.login.LoginClient$Request$1.createFromParcel(LoginClient.java:2521)
       at android.os.Parcel.readParcelable(Parcel.java:2111)
       at android.os.Parcel.readValue(Parcel.java:2020)
       at android.os.Parcel.readArrayMapInternal(Parcel.java:2321)
       at android.os.Bundle.unparcel(Bundle.java:249)
       at android.os.Bundle.getString(Bundle.java:1118)
       at android.content.Intent.getStringExtra(Intent.java:5145)
       at com.google.android.gms.analytics.Tracker$zza.zziJ(Unknown Source:4000)
       at com.google.android.gms.analytics.GoogleAnalytics.isInitialized(Unknown Source)
       at com.google.android.gms.analytics.GoogleAnalytics$zzb.onActivityStarted(Unknown Source)
       at android.app.Application.dispatchActivityStarted(Application.java:219)
       at android.app.Activity.onStart(Activity.java:1087) …
Run Code Online (Sandbox Code Playgroud)

android parse-platform facebook-sdk-4.0 android-proguard

11
推荐指数
1
解决办法
871
查看次数

Proguard minifyEnabled对于调试构建是真的,不适用于前Lollipop

我的应用程序的方法计数高于64k限制,所以我使用Proguard来减少它.

一切都适用于发布版本.
另一方面,调试版本仅适用于Lollipop +设备.在Lollipop之前的设备上启动时,我总是有臭名昭着的错误:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

这是我在app level gradle文件中的内容:

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

我已经尝试minifyEnabled true在调试版本中删除,然后在Lollipop +上构建失败,因此proguard正在工作!但不是在棒棒糖前.

因为我知道minifyEnabled不应该依赖于平台,所以也许构建过程会在Lollipop之前的设备上跳过它(因为我不知道是什么原因).

有人知道这个问题的解决方案吗?

PS.我知道multidex的可能性,但我将它作为我的最后手段.

编辑:

这是app level gradle文件的完整代码:

apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'me.tatarka.retrolambda'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.5'
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.5.5'
    }
}

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"
    defaultConfig …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-proguard

11
推荐指数
1
解决办法
7669
查看次数

签名的apk在proguard启用时崩溃了

我想在我的应用程序搭配使用ProGuard设置的ProGuard为true,那么问题开始时我用proguard的按照我的lib导入 -keepnames class com.somepackage.*与应用是越来越得到坠毁我的包的名字时,我尝试使用签名的APK.我知道这是一个愚蠢的问题,但我坚持到最后5小时不能找到一个简单的解决方案因为我使用大约20 lib.我跟着这个.Plz指导我,我该怎么做?

这是我的proguard规则类代码

-keepnames class beatbox.neelay.dummybeat.*
-keepnames com.srx.widget.*
-keepnames de.hdodenhof.circleimageview.CircleImageView.*
-keepnames com.bumptech.glide.*
-keepnames com.romainpiel.shimmer.*
-keepnames com.vansuita.gaussianblur.GaussianBlur
-keepnames com.antonyt.infiniteviewpager.InfinitePagerAdapter
-keepnames com.antonyt.infiniteviewpager.InfiniteViewPager
-keepnames com.eftimoff.viewpagertransformers.CubeOutTransformer
-keepnames com.ms.square.android.glassview.GlassView
-keepnames me.alexrs.fontpagertitlestrip.lib.FontPagerTitleStrip
Run Code Online (Sandbox Code Playgroud)

我现在无法生成任何已签名的apk.错误是.

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
Run Code Online (Sandbox Code Playgroud)

作业失败,请参阅日志了解详情

任何提示都会有所帮助.控制台输出

FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)
  • 出了什么问题:任务执行失败':app:transformClassesAndResourcesWithProguardForRelease'.

    作业失败,请参阅日志了解详情

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.

编辑build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
    applicationId "beatbox.neelay.dummybeat"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    renderscriptTargetApi 24
    renderscriptSupportModeEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" …
Run Code Online (Sandbox Code Playgroud)

android proguard android-proguard signed-apk

11
推荐指数
1
解决办法
2098
查看次数

Android proguard问题:路径可能不是null或空字符串.路径="空"

在设置之前,每件事情都很好

minifyEnabled是的

shrinkResources为true

设置这些值后,每当我运行项目时,我都会收到此错误:

Information:Gradle tasks [:app:assembleProdRelease]
Error:path may not be null or empty string. path='null'
Information:BUILD FAILED
Information:Total time: 23.606 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
Run Code Online (Sandbox Code Playgroud)

这个错误意味着什么错误:路径可能不是null或空字符串.path ='null' 这是build.gradle:

signingConfigs {
            release {
                storeFile file('/home/rishabh/Documents/dekhoJks/release.jks')
                storePassword "XXXXXXX"
                keyAlias "XXXXXXXX"
                keyPassword "XXXXXXXXX"
            }
        }
        buildTypes {
            release {
                minifyEnabled true
                //proguardFiles fileTree(dir: "proguard", include: ["*.pro"]).asList().toArray()
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                shrinkResources true
                signingConfig signingConfigs.release
            }
        }
Run Code Online (Sandbox Code Playgroud)

我试着把每一个该死的东西都放在proguard.pro中:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt …
Run Code Online (Sandbox Code Playgroud)

android proguard android-proguard

11
推荐指数
1
解决办法
7711
查看次数

Gradle 3.0.0的Proguard问题

我正在尝试使用ProGuard和新的Gradle 3.0.0版本创建一个APK.对于我认为在ProGuard配置文件中忽略的类,我收到了很多警告.相同的配置适用于Gradle 2.3.3但似乎在3.0.0上中断.警告很多,几乎没有读取ProGuard配置.

我的build.gradle

buildscript {
    repositories {
        mavenCentral()
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.0.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'


    }

}


allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://jitpack.io'
        }
        maven {
            url 'https://maven.google.com'
        }

    }
}
android{
 buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
            signingConfig signingConfigs.release
            lintOptions {
                disable 'MissingTranslation'
            }

        }




compileSdkVersion 27
buildToolsVersion "27.0.1"
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
testInstrumentationRunner 
"android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true

}
Run Code Online (Sandbox Code Playgroud)

下面的Proguard警告.

    Warning: library class android.animation.FloatArrayEvaluator extends …
Run Code Online (Sandbox Code Playgroud)

android proguard gradle android-gradle-plugin android-proguard

11
推荐指数
1
解决办法
1250
查看次数

Proguard在建造aar时没有保持课程

从这个参考:

https://github.com/codepath/android_guides/wiki/Building-your-own-Android-library

我有以下gradle文件:

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.2"

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

以下proguard文件:

-dontobfuscate
-optimizations !code/allocation/variable

-keep public class * {
    public protected *;
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行'assembleRelease'任务来构建我的发布aar文件时,aar中的所有类都丢失了.

有任何想法吗?

android aar android-proguard

11
推荐指数
2
解决办法
2130
查看次数

如何减小apk文件的大小?

首先,不建议我官方文档.当我们使用预定义的textview从Android Studio构建应用程序时,只显示"hello world",它会生成一个超过1.2MB的APK.但是Playstore上的一些应用程序可以在500KB以下获得,具有很多功能.我已经应用了Android Studio的所有功能,如proguard,minifyEnabled等,但这没有用.那么,我怎样才能达到这种压缩水平?

android lint minify android-studio android-proguard

11
推荐指数
3
解决办法
2241
查看次数

如何用proguard定位kotlin`内部`类?

我想对任何标有kotlin internal可见性修饰符的类进行预测(混淆).

Kotlin internal类在JVM上是公共的,因此它们在Java源代码中是可见的和可用的.我不希望这些类被使用或出现在自动完成中,所以我想对它们进行模糊处理以阻止它们的使用.

我可以将什么样的规则适用于目标internal类?

proguard kotlin dexguard android-proguard

11
推荐指数
1
解决办法
489
查看次数