从Android Studio项目

时间:2016-05-06 07:17:12

标签: java android android-studio

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

3 个答案:

答案 0 :(得分:22)

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

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

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

Inspection result

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

答案 1 :(得分: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有更多关于它可以做什么的信息。

答案 2 :(得分:0)

第1步

通过Proguard或R8生成usage.txt和mapping.txt

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

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

第2步

查找用法名称.txt中而不是mapping.txt中的类名称记录,这些是Proguard / R8删除的未使用的类 编写这样的算法并不难,但是您可以考虑使用Binary Search Tree here