从Android Studio项目中删除所有未使用的类和方法

rqqzpn5f  于 2023-01-03  发布在  Android
关注(0)|答案(3)|浏览(761)

我已经使用了lint(分析-〉检查代码...),并找出未使用的方法和资源。所有未使用的资源删除折射-〉删除未使用的资源,但没有找到任何选项,像这样删除java类和方法。有没有任何功能在android studio或任何插件,可以删除所有java类,方法中没有使用的代码,以保存手动折射?

ee7vknir

ee7vknir1#

这可以通过使用内置检查Java | Declaration redundancy | Unused declaration来实现。
要在整个项目上运行它,请转到Code -> Analyze -> Run inspection by name...,键入Unused declaration并选择所需的作用域。然后仔细检查输出,如果需要,将一些类标记为入口点。
现在您可以选择列表中的Unused declaration节点,并同时对所有未使用的声明执行Safe delete操作。

对于Kotlin,有类似的检查Kotlin | Redundant constructs | Unused symbol

ippsafx7

ippsafx72#

Android随附ProGuard,可以执行您想要的操作。如果您使用Gradle作为构建系统,则可以在build.gradle文件中添加以下行:

android {

    // ... other configurations

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

proguard-rules-debug.pro文件只需包含一行

-dontobfuscate

有了这些添加,你的发布版本将被缩小和混淆,但是你的调试版本只会被缩小,也就是说,不必要的代码被删除。注意,ProGuard操作的是版本,而不是源代码。
ProGuard常见问题解答提供了更多关于其功能的信息。

zujrkrfu

zujrkrfu3#

第一步
使用Proguard或R8生成usage.txt和mapping.txt

  • Add -printusage to your proguard.pro file Run
  • ./gradlew app:minifyReleaseWithProguard./gradlew app:minifyReleaseWithR8

第二步
查找在usage.txt中但在mapping.txt中的类名记录,这些是由Proguard/R8删除的未使用的类。编写这样的算法并不难,但您可以考虑使用哈希表或二叉树。
我详细阐述了更多的here

相关问题