我写了一个简单的android应用程序, 我创建了一个扩展apache的HttpClient接口的接口(MyHttpClient),并创建了一个名为MyHttpClientImpl的实现类。 在构建我的项目时,我使用proguard来模糊我的apk,我注意到在优化过程中,接口MyHttpClient已从apk中删除。 如果没有物理类MyHttpClient,应用程序如何工作(它仍在工作)? 它是如何知道MyHttpClientImpl正在扩展/实现apache的HttpClient(如果存储了这个连接的话)? 谢谢。
答案 0 :(得分:2)
ProGuard的优化步骤可以将界面与其唯一的实施类合并。生成的类仍应实现其所有其他接口,在本例中为HttpClient。您可以通过查看带有javap的结果类来检查这一点:
javap -classpath processed.jar mypackage.MyHttpClient
答案 1 :(得分:0)
因为在执行时不检查java中的接口,所以只编译时间。例外情况是当你使用反射时,你不想删除界面。