我已经使用了lint(分析-〉检查代码...),并找出未使用的方法和资源。所有未使用的资源删除折射-〉删除未使用的资源,但没有找到任何选项,像这样删除java类和方法。有没有任何功能在android studio或任何插件,可以删除所有java类,方法中没有使用的代码,以保存手动折射?
ee7vknir1#
这可以通过使用内置检查Java | Declaration redundancy | Unused declaration来实现。要在整个项目上运行它,请转到Code -> Analyze -> Run inspection by name...,键入Unused declaration并选择所需的作用域。然后仔细检查输出,如果需要,将一些类标记为入口点。现在您可以选择列表中的Unused declaration节点,并同时对所有未使用的声明执行Safe delete操作。
Java | Declaration redundancy | Unused declaration
Code -> Analyze -> Run inspection by name...
Unused declaration
Safe delete
对于Kotlin,有类似的检查Kotlin | Redundant constructs | Unused symbol。
Kotlin | Redundant constructs | Unused symbol
ippsafx72#
Android随附ProGuard,可以执行您想要的操作。如果您使用Gradle作为构建系统,则可以在build.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文件只需包含一行
proguard-rules-debug.pro
-dontobfuscate
有了这些添加,你的发布版本将被缩小和混淆,但是你的调试版本只会被缩小,也就是说,不必要的代码被删除。注意,ProGuard操作的是版本,而不是源代码。ProGuard常见问题解答提供了更多关于其功能的信息。
zujrkrfu3#
第一步使用Proguard或R8生成usage.txt和mapping.txt
-printusage
./gradlew app:minifyReleaseWithProguard
./gradlew app:minifyReleaseWithR8
第二步查找在usage.txt中但在mapping.txt中不的类名记录,这些是由Proguard/R8删除的未使用的类。编写这样的算法并不难,但您可以考虑使用哈希表或二叉树。我详细阐述了更多的here
3条答案
按热度按时间ee7vknir1#
这可以通过使用内置检查
Java | Declaration redundancy | Unused declaration
来实现。要在整个项目上运行它,请转到
Code -> Analyze -> Run inspection by name...
,键入Unused declaration
并选择所需的作用域。然后仔细检查输出,如果需要,将一些类标记为入口点。现在您可以选择列表中的
Unused declaration
节点,并同时对所有未使用的声明执行Safe delete
操作。对于Kotlin,有类似的检查
Kotlin | Redundant constructs | Unused symbol
。ippsafx72#
Android随附ProGuard,可以执行您想要的操作。如果您使用Gradle作为构建系统,则可以在
build.gradle
文件中添加以下行:proguard-rules-debug.pro
文件只需包含一行有了这些添加,你的发布版本将被缩小和混淆,但是你的调试版本只会被缩小,也就是说,不必要的代码被删除。注意,ProGuard操作的是版本,而不是源代码。
ProGuard常见问题解答提供了更多关于其功能的信息。
zujrkrfu3#
第一步
使用Proguard或R8生成usage.txt和mapping.txt
-printusage
to your proguard.pro file Run./gradlew app:minifyReleaseWithProguard
或./gradlew app:minifyReleaseWithR8
第二步
查找在usage.txt中但在mapping.txt中不的类名记录,这些是由Proguard/R8删除的未使用的类。编写这样的算法并不难,但您可以考虑使用哈希表或二叉树。
我详细阐述了更多的here