签名的 apk 在 proguard 启用中崩溃

2024-01-27

我正在尝试在我的应用程序中使用 proguard 将 proguard 设置为 true 然后问题开始 当我使用 proguard 时,我正在导入 libthis https://stackoverflow.com/questions/10971810/proguard-keep-class-names -keepnames class com.somepackage.*当我尝试使用签名的 apk 时,使用我的包名称,应用程序会崩溃。我知道这是一个愚蠢的问题,但我在过去的 5 个小时里一直坚持这个问题,无法找到一个简单的解决方案,因为我使用了大约 20 个库。我跟着这也是 https://gist.github.com/Jackgris/c4a71328b1ae346cba04。请指导我,我该怎么做?

这是我的 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

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

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.

作业失败,请参阅日志了解详细信息

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

FAILURE: Build failed with an exception.
  • 什么地方出了错: 任务“: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"

    vectorDrawables.useSupportLibrary = true
}
lintOptions {
    checkReleaseBuilds false
    abortOnError false
}
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

repositories {
jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
maven { url 'http://Manabu-GT.github.com/GlassView/mvn-repo' }
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(':foldingtabbar')
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
compile 'com.android.support:design:25.2.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.intuit.sdp:sdp-android:1.0.4'
compile 'com.leo.simplearcloader:simplearcloader:1.0.1'
compile 'com.ms.square:glassview:0.1.0'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.romainpiel.shimmer:library:1.4.0@aar'
compile 'com.github.StephenVinouze:ShapeView:1.1.0'
compile 'com.eftimoff:android-viewpager-transformers:1.0.1@aar'
compile 'com.github.antonyt:InfiniteViewPager:v1.0.0'
compile 'me.alexrs:font-pager-titlestrip:1.0.0'
compile 'com.github.florent37:arclayout:1.0.1'
compile 'com.android.support:cardview-v7:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
compile 'com.github.jrvansuita:GaussianBlur:v1.0.2'
compile 'com.google.code.gson:gson:2.7'
compile 'com.android.support:support-vector-drawable:25.2.0'
testCompile 'junit:junit:4.12'
}

我尝试 proguard-rule.pro 的另一种方法

-keepnames class beatbox.neelay.dummybeat.**{*;}
-keepnames class com.srx.widget.**{*;}
-keepnames class de.hdodenhof.circleimageview.CircleImageView.**{*;}
-keepnames class com.bumptech.glide.**{*;}
-keepnames class com.romainpiel.shimmer.**{*;}
-keepnames class com.vansuita.gaussianblur.**{*;}
-keepnames class com.antonyt.infiniteviewpager.**{*;}
-keepnames class com.eftimoff.viewpagertransformers.**{*;}
-keepnames class com.ms.square.android.glassview.**{*;}
-keepnames class me.alexrs.fontpagertitlestrip.lib.FontPagerTitleStrip**{*;}

the 依赖树 https://gist.github.com/neelayak/ef0fa83f9397c34eac0ac9cf60aa02a3


Reason :并不是每个类或库都在启用 Proguard 的情况下进行优化,所以 Proguard 所做的是,如果类没有优化,它会删除类,从而导致项目崩溃和错误。

解决方案 :在您的 proguard.cfg 文件中keepprogaurd 不支持的类或​​库。尝试一下这里描述的所有内容:
尝试添加:

-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }


或者,如果您使用的是 v4 lib:

-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }


如果您使用的是最新的 android studio,您可能会发现它是 proguard-rules.pro


在你的情况下尝试使用-不要对类名发出警告。就像你的错误表明它无法优化circleimageview Library。所以也尝试添加这个:

-dontwarn hdodenhof.**
-keep class hdodenhof.**


如果仍然无法正常工作,请降级您的circleimageview库:
compile 'de.hdodenhof:circleimageview:1.3.0'这对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

签名的 apk 在 proguard 启用中崩溃 的相关文章

  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • 删除视图并重新创建它

    有没有办法删除设置的视图 setContentView R layout set map center mapView MapView findViewById R id mapview 如果我再次调用此视图 则会收到一条错误消息 java
  • 如何使用gradle这样的格式更改apk名称?

    当我使用 gradle 构建应用程序时 我想将 app release apk 文件名更改为如下所示 format appname of package name V version code yyMMdd R T explain appn
  • Android平台源码中哪里可以找到版本信息

    Android 平台源文件中的版本信息在哪里找到 我尝试查找 设置 gt gt 中列出的有关手机的一些信息 显示的一些信息包括固件版本 模块编号 基带版本 内核版本 你可以给它办理登机手续platform build core versio
  • Android:如何从输入流创建 9patch 图像?

    我使用下面的代码实例化 9patch 图像并将其设置为按钮的背景 下图显示了不理想的结果 InputStream MyClass class getResourceAsStream images btn default normal 9 p
  • 在Android内存中存储gif图像

    我对安卓还很陌生 我想将图像保存到内存中 然后从内存中检索图像并将其加载到图像视图中 我已使用以下代码成功将图像存储在内存中 void saveImage String fileName img cnt jpg File file new
  • Android-全屏视频视图

    我正在尝试使此 VideoView 以全屏模式显示 public class ViewVideo extends Activity private String filename private static final int INSER
  • Android:拍照后调用裁剪活动

    我在解析拍摄照片的 uri 来裁剪活动时遇到问题 在我的应用程序中 用户可以拍摄一张照片或从图库中选择一张照片 然后裁剪并上传 一切听起来都很简单 从图库中选择时 图库应用程序会返回所选照片的 uri 如下所示 content media
  • 如何在我的 Android 应用程序中实现应用内购买?

    如何在我的 Android 应用程序中实现应用内购买 我提到 http developer android com guide market billing billing integrate html billing service ht
  • Android 导航回到 Activity;不要重新加载父级

    我有一个场景 我单击 ListFragment 并启动一个新的 Activity 如下所示 public void onListItemClick ListView l View v int position long id super o
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • Android 中带有透明背景的 ImageButton [重复]

    这个问题在这里已经有答案了 我已经按照这篇文章在android中制作ImageButton 安卓图像按钮 https stackoverflow com questions 2283444 android image button 图像出现
  • 如何从webkit浏览器中检测Android版本和品牌?

    如何通过webkit浏览器检测Android版本和品牌 可靠吗 我相信你可以检查用户代理 但是 我认为它不安全 因为有很多方法可以用来欺骗用户代理 在谷歌上搜索这个问题给了我们很多答案 它甚至可以在默认浏览器上运行 您只需输入 about
  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • 使用 cordova cli 构建时的 Android 安装位置

    我正在使用 cordova CLI 工具构建一个大型 cordova phonegap 应用程序 我需要 AndroidManifest xml 文件中的 installLocation 具有 installLocation auto 或p
  • 确定视图是否在屏幕上 - Android

    我对这个有点困惑 首先也是最重要的是 以下链接很有用 但是我提出了一些可见性问题 链接 检查视图可见性 https stackoverflow com questions 4628800 android how to check if a
  • 为什么 ExpandableListView 更改 ChildView 设置(Android)?

    我对使用 ExpandableListView 有疑问 就我而言 我有两个组视图和两个子视图 而子视图由一个带有多个按钮 文本视图等的相对布局组成 例如 当首先扩展第二组并对视图持有者进行一些更改并随后扩展第一组时 先前所做的更改也会自动应
  • 获取当前图片在图库中显示的位置

    在我的应用程序中 我有一个图片库 但我想检测当前显示图像的位置 例如 当我启动我的活动时 位置是 0 但是当我在图库中滚动时 我想获取当前显示图像的位置 我尝试过 OnFocusChanged OnItemClicked 但只有当我单击图库
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • Android中绑定适配器有什么用?

    我一直在阅读有关Android中绑定适配器的文章 但我似乎不明白它 何时使用绑定适配器 有人可以用一个简单的例子来解释它吗 我读过的一篇文章在主活动中有一个绑定适配器 绑定适配器有一个参数 toastMessage 显然 只要 toastM

随机推荐

  • 如何在 Xcode 中链接动态库?

    我目前正在 Qt 中开发一个程序 它使用库 libqextserialport 1 dylib 我构建它并在 x 代码中运行 它返回 dyld Library not loaded libqextserialport 1 dylib Ref
  • 创建数组时出现系统 OutOfMemoryException

    我得到一个SystemOutOfMemoryException创建数组时 然而length我的阵列does not exceed Int32 MaxValue 这是代码 请不要评判该代码 它不是我的代码 至少有 7 年历史 Dim myFi
  • GNU find:什么时候应用默认操作?

    Debian 8 的 find 命令的手册页显示 如果整个表达式不包含除 prune 或 print 之外的任何操作 print 对整个表达式为 true 的所有文件执行 那么为什么这些输出不同 mkdir p test foo test
  • 可变字段不应该是“公共静态”

    我收到下面一行的 sonarQube 错误 有专家建议如何解决这个问题吗 提前致谢 protected static final String COLUMN NAMES new String date customerNumber cust
  • 尝试编写 IRC 客户端,但很难找到有关代码和连接协议的优质资源

    我已经看过 RFC 但我仍然在挣扎 我已经用 C 编写了一个基本客户端 但找不到有关如何正确连接的文档 一旦我连接并传输NICK和USER信息 我就需要加入一个频道 如果我立即执行 JOIN 则不会发生任何事情 大概是因为太早了 我必须推迟
  • 将角度分量文件拆分为单独的文件

    我有一个角度分量 绘制组件 它有很多按钮 如绘制矩形 绘制圆形等 我正在使用 paperjs 它有助于实际绘图 我有一些已更新的常见对象 例如 我有一个 paperjs 对象 每当我绘制任何形状 无论是圆形 矩形还是任何其他形状 时 该对象
  • 使用 SAM 在本地调用 Lambda 失败/超时

    我正在尝试获取本地环境来使用 VSCode windows 运行 调试 Python Lambda 我正在使用提供的 HelloWorld 示例来掌握这一点 但我无法调用 用于设置 SAM 和调用 Lambda 的步骤 我已经安装并运行了
  • 是什么导致 MyISAM 损坏? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我听说 MyISAM 表可能会损坏 什么样的操作最有可能损坏它们以及如何安全地修复所述损坏 MySQL 文档对此非常明确 http d
  • 如何在 Javascript 中按属性数量对对象进行排序? [复制]

    这个问题在这里已经有答案了 我有一个对象 William Hill bet365 royal panda pay 0 karamba roller 0 braned 0 pay 0 betfred braned 0 并想按属性数量对其进行排
  • 如何在 Python 中将二叉树打印为节点结构

    我有一个蟒蛇代码 https 1drv ms f s Aj9lfQS8qKqwnWiXL t6pVaPHu0y将字符串数学表达式转换为二叉树并对树的节点进行排序 以便左子节点始终小于右子节点 我想按以下顺序打印二叉树 例如 考虑数学表达式
  • 任务与异步任务

    好吧 我一直在试图解决这个问题 我读过一些文章 但没有一篇提供我正在寻找的答案 我的问题是 为什么Task必须返回一个任务async Task不是吗 例如 public override Task TokenEndpoint OAuthTo
  • 使用循环通过网络抓取创建表

    我正在尝试通过网络抓取tax rates org来获取德克萨斯州每个县的平均税率 我在 csv 文件中有一个包含 255 个县的列表 我将其导入为 TX counties 它是一个单列表 我必须将每个县的 URL 创建为字符串 因此我使用
  • 处理 Hadoop SequenceFile 中的 Writables 完全限定名称更改

    我有一堆 Hadoop SequenceFiles 它们是用我编写的一些 Writable 子类编写的 我们称之为 FishWritable 这个 Writable 在一段时间内运行良好 直到我决定为了清晰起见需要对包进行重命名 所以现在
  • gensim word2vec 访问输入/输出向量

    在 word2vec 模型中 有两个线性变换 将词汇空间中的单词带到隐藏层 in 向量 然后返回词汇空间 out 向量 通常这个输出向量在训练后会被丢弃 我想知道是否有一种简单的方法可以访问 gensim python 中的输出向量 同样
  • 如何从字符向量解析 CSV 数据以提取数据框?

    R 中的 read table 和 read csv 函数用于解析包含分隔数据的文件或 URL 并生成 R 数据帧 但是 我已经有一个包含 CSV 分隔数据的字符向量 使用逗号和 n 作为列和记录分隔符 因此我不需要从文件或 URL 中读取
  • System.Web.UI.ViewStateException,无效的视图状态

    我的网站每天都会抛出以下异常 但我找不到解决方案 我在网络上做了很少的研究 这就是我到目前为止所做的 将以下选项添加到 aspx 不会解决问题 ValidateRequest 假 EnableEventValidation 假 ViewSt
  • 使用二维数组作为一维数组正确吗?可能会导致未定义的行为等等?

    这段代码正确吗 由于某种原因 是否不推荐使用二维数组作为一维数组 char tab1 3 3 for int i 0 i lt 3 i for int j 0 j lt 3 j tab1 i j char i printf c char t
  • 文化不变 Decimal.TryParse()

    我正在编写一个自定义字符串到十进制验证器 它需要使用忽略区域性的 Decimal TryParse 即不关心输入是否包含 或 作为小数点分隔符 这是建议的方法 public static bool TryParse string s Num
  • iPhone - NSFetchedResultsController 的缓存名称

    各位大家好 我的 CoreData 驱动应用程序有多个来自同一存储的数据视图 并且全部使用 NSFetchedResultsController 目前 它们的 NSFetchedResultsController 缓存都具有相同的名称 Ro
  • 签名的 apk 在 proguard 启用中崩溃

    我正在尝试在我的应用程序中使用 proguard 将 proguard 设置为 true 然后问题开始 当我使用 proguard 时 我正在导入 libthis https stackoverflow com questions 1097