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

Posted

技术标签:

【中文标题】从 Android Studio 项目中删除所有未使用的类、方法【英文标题】:Remove all unused classes,methods from Android Studio project 【发布时间】:2016-09-01 04:19:48 【问题描述】:

我使用了 lint(Analyze->Inspect Code...) 并找出未使用的方法和资源。 Refractor->Remove used Resources 删除了所有未使用的资源,但没有找到任何类似这样的选项来删除 java 类和方法。 android studio或任何插件中是否有任何功能可以删除所有java类,代码中未使用的方法以节省手动折射?

【问题讨论】:

How can I find all unused methods of my project in the Android Studio IDEA?的可能重复 @Nirekin 我的问题是“删除未使用的类和方法”而不是“查找未使用的方法” 我相信它不是自动化的。你必须用手来做 【参考方案1】:

第一步

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

-printusage 添加到您的 proguard.pro 文件中运行

./gradlew app:minifyReleaseWithProguard./gradlew app:minifyReleaseWithR8

第 2 步

查找usage.txt中但不在mapping.txt中的类名记录,这些是Proguard/ R8删除的未使用的类 这样的算法写起来不难,但是可以考虑使用HashTable或者二叉树。

我已经详细阐述了here

【讨论】:

【参考方案2】:

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 FAQ 有更多关于它可以做什么的信息。

【讨论】:

我相信主题启动者会被 Android Studio 的发现所困扰,而不是从未使用的方法中清除 apk @EugenMartynov 也许,但问题中没有明确说明。也许 OP 可以对此有所了解。 您正在告诉解决方案在运行时删除未使用的方法。需要在开发过程中删除未使用的方法。【参考方案3】:

这可以通过使用内置检查Java | Declaration redundancy | Unused declaration来实现。

要在整个项目上运行它,请转到 Analyze -> Run inspection by name...,输入 Unused declaration 并选择所需的范围。 然后仔细检查输出并在需要时将一些类标记为入口点。

现在您可以在列表中选择Unused declaration 节点,并立即对所有未使用的声明执行Safe delete 操作。

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

【讨论】:

嗨,我看不到 Kotlin |冗余结构 |未使用的符号选项。你能帮忙吗 @MrMike 检查在Analyze -> Run inspection by name... 中找不到全名,你可以试试Unused symbol。 i.stack.imgur.com/lwTwx.png

以上是关于从 Android Studio 项目中删除所有未使用的类、方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android Studio 中的特定文件中删除所有评论? [复制]

如何为 Android Studio 中的所有配置删除未使用的字符串资源?

未找到 Android Studio 映像

从 Android Studio 中移除项目

如何在 Android Studio IDE 中找到我项目中所有未使用的方法?

如何优化 Android Studio 中所有文件的导入