Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Proguard是否只删除一个地方使用的方法?[方法内联]_Java_Android_Performance_Proguard_Android Proguard - Fatal编程技术网

Java Proguard是否只删除一个地方使用的方法?[方法内联]

Java Proguard是否只删除一个地方使用的方法?[方法内联],java,android,performance,proguard,android-proguard,Java,Android,Performance,Proguard,Android Proguard,我正在考虑使用Proguard,因为我的应用程序更接近生产,使其更轻 在Android上,除了低存储设备外,还有65K方法限制。我知道Proguard会删除未使用的方法,但它会删除只在一个地方使用的方法吗?我的意思是,我写了一些方法只是为了让代码更干净,但它可以节省一个方法调用(CPU和RAM返回的最昂贵的操作之一,我研究了微码)和一个65K最大计数的方法,以及最终包中的一些字节 Proguard是否检测到此类情况并删除方法?我必须自己配置吗?如果是stacktrace Deobfousatio

我正在考虑使用Proguard,因为我的应用程序更接近生产,使其更轻

在Android上,除了低存储设备外,还有65K方法限制。我知道Proguard会删除未使用的方法,但它会删除只在一个地方使用的方法吗?我的意思是,我写了一些方法只是为了让代码更干净,但它可以节省一个方法调用(CPU和RAM返回的最昂贵的操作之一,我研究了微码)和一个65K最大计数的方法,以及最终包中的一些字节


Proguard是否检测到此类情况并删除方法?我必须自己配置吗?如果是stacktrace Deobfousation呢?

如果使用,proguard不会删除该方法


而且,如果您已经知道这样一种方法,为什么不在启用proguard的情况下构建一个apk,并在应用程序中测试该方法调用的功能,然后自己进行检查?

由于使用了代码,因此不会删除它们

如果启用了,它将内联这些方法:方法调用将被删除,方法代码将插入方法调用所在的位置

如果是,stacktrace Deobfousation呢


如果内联方法中存在异常,它将显示在方法调用站点(调用被删除的位置)的stacktrace中。

就是这样!我以前不知道它叫方法内联。非常感谢您的回答!我有一个带有一次性方法的类,但是这些静态方法只在另一个类中使用。你知道Proguard在内联这些方法之后是否仍然会删除这个类吗?做一个实验来找出答案。构建一个预先准备好的包,并使用apktool等工具对其进行反向工程,研究哪些字节码被保留,哪些没有。阅读您的评论让我意识到,反向工程后,我可以检查类是否仍然存在。但是,我会使用而不是apktool来查看java,而不是smali;)laalto已经找到了答案,但我很好奇。。。如何测试一个方法是否已经内联,或者Proguard是否已经完成了任何其他优化?