【问题标题】:How to show decompiled Kotlin code from an Android library如何从 Android 库中显示反编译的 Kotlin 代码
【发布时间】:2018-07-06 02:55:15
【问题描述】:

我编写了一个已上传到私人服务器的库。当我将该库作为依赖项包含在我的应用程序项目中并从其中一个库类中查看源代码时,实际上并未对源代码进行反编译。它只显示类名和方法。例如:

package com.example.library.ui

public final class RoundedDrawable public constructor() : android.graphics.drawable.Drawable {

    public final var backgroundColor: kotlin.Int /* compiled code */

    // ... other similar fields

    public open fun draw(canvas: android.graphics.Canvas): kotlin.Unit { /* compiled code */ }

    // ... other similar functions

}

如您所见,它只显示/* compiled code */ cmets,而不是完整的源代码。有一个“反编译为 Java”的选项;哪个有效,但我更愿意看到 Kotlin 源代码。这可能吗?

我找到了similar question,它解释了如何显示原始 Java 代码,但对 Kotlin 没有。

【问题讨论】:

  • 其实这好像是this的复制品,3个月后还没有回复:/
  • @Moira 确实如此,很好的发现。基于这个问题,看来我必须使用task sourcesJar 将源文件与 aar 文件分开上传。虽然我不确定它是如何工作的,或者我使用的服务器是否准备好处理它。我想我需要做更多的研究。

标签: android android-studio kotlin android-library


【解决方案1】:

你在使用 Gradle 吗?

You need to download sources for the library:

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}

如果找到附加的源/文档,IntelliJ 将在查看 .class 文件时使用这些。

使用 Maven,您可以在工具窗口中使用 右键单击 -> 下载源代码

执行此操作

除此之外,将.class 文件反编译到 Kotlin 是不可能的,并且效果很好。 Despector 有一个非常粗糙的 Kotlin“反编译器”。

【讨论】:

  • 显然Android Studio 已经downloads libraries with sources。 “附加资源”是什么意思?是否必须在服务器上单独提供反编译的代码?
  • @Bryan 好吧,seems to be some doubt about that answer,我可以确认 IntelliJ 从未为我做过这件事。也许这是特定于 Android 插件的,但那会很奇怪
  • 啊,那是真的,我只是快速阅读。我正在寻找一种在我的 Android 项目中设置 downloadJavadoc = true 的方法,这就是我找到的答案。我不知道我会把它放在哪里(假设 Android 插件支持它)。
猜你喜欢
  • 2021-05-20
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2019-05-27
相关资源
最近更新 更多