热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用于库的AndroidStudioconsumerProguardFiles不起作用

如何解决《用于库的AndroidStudioconsumerProguardFiles不起作用》经验,为你挑选了1个好方法。

我想在我的库上使用proguard,但文件(规则)应该在库中设置.这意味着我不想在我的app模块中明确设置规则w(属于库).

我发现有类似consumerProguardFiles的属性.我的设置:

库gradle:

buildTypes {
    debug {
        debuggable true
        minifyEnabled false
    }
    release {
        minifyEnabled true
        consumerProguardFiles 'proguard-rules.pro'
    }
}

app gradle:

buildTypes {
    debug {
        applicationIdSuffix ".debug"
        debuggable true
        minifyEnabled false
        signingConfig signingConfigs.debug
    }
    release {
        debuggable false
        minifyEnabled true
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

为什么上面的配置不起作用?我收到错误,无法找到库中的包/符号.


编辑:

重要的是我的proguard-rules.pro用于库和proguard-rules.pro用于主应用程序模块都是空的.

示例错误:

Error:(3, 60) error: package (my library package here) does not exist
(...)
Error:(16, 9) error: cannot find symbol class NavigationStructureModel
(...)

超过一个handrued错误.我可以看到我的库中的所有课程都丢失了.



1> Eugen Pechan..:

你需要弄清楚你是否愿意

    在库上运行proguard

    在app上运行proguard(提示:就是这个.)

在库上运行proguard

那是它到达应用程序之前.您的库proguard规则负责使所有代码都可访问和存在,但您可能会混淆内部类.

这是库build.gradle:

android {
    defaultConfig {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    buildTypes {
        release {
            minifyEnabled true // Yes, run proguard on the library itself.
        }
    }
}

如果您将此库作为开源发布,则不需要此.如果您不将库发布为公共,则不需要此.

我收到错误,无法找到库中的包/符号.

Proguard构建了类之间的依赖关系图.此时,库是一个独立的单元,因此如果您没有提供任何规则,则不会使用任何类,因此proguard会将它们全部删除.

在应用程序上运行proguard

让消费者(应用程序)知道要保留哪些类库.

这是库build.gradle:

android {
    defaultConfig {
        // Here's what proguard on the app should do on the library's behalf.
        consumerProguardFiles 'proguard-consumer-rules.pro' 
    }
    buildTypes {
        release {
            minifyEnabled false // No, don't proguard the library itself.
        }
    }
}

proguard如何工作

您需要告诉proguard要保留哪些代码以及要保留的名称.Proguard会删除所有未使用的代码并拼写您不想留下的名称.

你不告诉proguard要删除什么,你告诉proguard要保留什么.


推荐阅读
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 前言:在学习Service过程中,看其他人的博客,讲的不怎么全,需要查看多人的博客才能弄明白。这篇文章是我个人总结。不正之处,还望大牛指正。写的比较浅,适合入门操作。一、Service ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • Icantseeanythingfunctionallywrongintermsofwhatgetsexecuted,butIvejustwastedanhour ... [详细]
  • 长话短说,尝试利用Google的良好做法。我为Di计划使用Dagger2犯了一个错误。现在我被 ... [详细]
  • 我看到一个问题,即AndroidStudio在创建新的APK文件时总是删除我以前创建的APK文件? ... [详细]
author-avatar
E-sc68
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有