gpt4 book ai didi

库的 Android Studio consumerProguardFiles 不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:59:18 30 4
gpt4 key购买 nike

我想在我的库中使用混淆器,但文件(规则)应该在库中设置。这意味着我不想在我的应用程序模块中明确设置规则 w(属于库)。

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

库gradle:

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

应用程序等级:

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
(...)

不止一个手工错误。如我所见,我的库中的所有类(class)都丢失了。

最佳答案

你需要弄清楚你是否想要

  1. 在库上运行 proguard
  2. 在应用程序上运行 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.
}
}
}

如果您将此库作为开源发布,则不需要它。如果您不向公众发布库,则不需要它。

I get errors that packages/symbols from the library cannot be found.

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 会删除所有未使用的代码并打乱您不想保留的名称。

您不需要告诉混淆器删除什么,而是告诉混淆器保留什么。

关于库的 Android Studio consumerProguardFiles 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753498/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com