本文介绍了Android R8(ProGuard)参数名称已更改(我不想更改参数名称)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用AGP(Android Gradle插件)7.0.4 运行proGuard后->;接口参数名称已更改 (com.android.tools.Build:Gradle:4.2.2版本未更改接口参数名称)
在Gradle 4.2.2
public interface ITicketBoxCount {
public abstract fun callback(condition: kotlin.Int): kotlin.Unit
}
在Gradle 7.0.4
public interface ITicketBoxCount {
void callback(int var1);
}
使用相同的proGuard_rules.txt;
-keep interface myinterfaceclass.** { *; }
我已尝试";-Keep参数名称&-&>类参数名称未更改,但接口参数名称已更改
我不想更改接口参数名称 请帮帮我
其他
我制作了一个(SDK)文件
定义接口&Quot;ITicketBoxCount";->;使AAR-&>构建时运行r8-&>;反编译AAR-&>ITicketBoxCount接口参数名称全部混淆
推荐答案
我在R8问题跟踪器中找到了原因
您似乎正在使用Kotlin 1.6版。与AGP 7.0捆绑在一起的R8版本是在1.6发布之前发布的,无法读取元数据。因此,它将简单地丢弃它,因为它不能对它做任何事情。如果通过命令行进行编译,您还应该得到以下信息消息:
Info: Unexpected error while reading com.noimply.mymodule.ITicketCount's kotlin.Metadata: null
Info: Unexpected error while reading com.noimply.mymodule.IUpdateNotification's kotlin.Metadata: null
Info: Unexpected error while reading com.noimply.mymodule.MyModuleSDK's kotlin.Metadata: null
Info: Unexpected error while reading com.noimply.mymodule.view.MainActivity's kotlin.Metadata: null
Info: Unexpected error while reading com.noimply.mymodule.ILoginCallback's kotlin.Metadata: null
Info: Unexpected error while reading com.noimply.mymodule.ITicketBoxCount's kotlin.Metadata: null
您将必须使用3.0.77版或升级版或r8版本3.1.X,它们都是当前发布的候选版本。您可以通过在您的顶级build.gradle中添加以下内容来设置特定版本:
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw")
}
}
dependencies {
classpath("com.android.tools:r8:3.0.77")
classpath('com.google.guava:guava:30.1.1-jre') // <-- THIS IS REQUIRED UNTIL R8 3.2.4-dev
}
}
}
如果您想知道为什么它可以在AGP 4.2中工作,那是因为该版本的R8没有对Kotlin元数据进行建模,只是传递它。
这篇关于Android R8(ProGuard)参数名称已更改(我不想更改参数名称)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!