Android R8(ProGuard)参数名称已更改(我不想更改参数名称) [英] Android R8(Proguard) parameter name changed (i don't want change my parameter name)

查看:138
本文介绍了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)参数名称已更改(我不想更改参数名称)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆