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

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

【问题讨论】:

标签: java android android-studio


【解决方案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 symboli.stack.imgur.com/lwTwx.png
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多