从Google Play服务jar文件中剥离一些文件是否存在问题?

时间:2014-02-20 18:43:28

标签: java android jar google-cloud-messaging google-play-services

我们的应用使用Google Play服务SDK进行GCM推送通知,但jar文件中有com.google.ads包。因此,我们的应用程序被某些移动安全应用程序标记为广告应用程序。我从google-play-services.jar中删除了com.google.ads包,GCM推送仍然可以正常使用精简版jar。

通过从Google Play服务jar文件中删除某些文件是否存在问题?你以前见过同样的问题吗?不知何故,我无法通过互联网搜索看到任何相关信息。

1 个答案:

答案 0 :(得分:2)

这不应该是一个问题,因为没有人试图加载任何这些类。

认为在java中按需加载类,因为您可以阅读here

  

Java类加载器是Java运行时环境的一部分   将Java类动态加载到Java虚拟机中。1   通常只按需加载类。 Java运行时系统   不需要知道文件和文件系统因为   类加载器。

因此,jar中存在或应该存在的类不会以任何方式解析,无论它是什么内容,它只是应用程序可能调用的一堆资源。实际上,jar只是一个库,它提供的类可以作为应用程序和设备中安装的其他东西之间的桥梁,但是只加载你需要的类。

此外,只要内容没有“密封”,就不会检查内部文件的一致性。正如您可以阅读here

  

包装密封:可以选择密封存储在JAR文件中的包   这样包可以强制实现版本一致性。密封包装   在JAR文件中意味着该包中定义的所有类必须   可以在同一个JAR文件中找到。

包装可以密封,但如果你已经打破了罐子,在一个设备上试过它,它就可以了,这意味着它没有密封。

因此,就您实际需要的类而言,它们的版本是正确的,没有其他任何事情可以发生。