我们的应用使用Google Play服务SDK进行GCM推送通知,但jar文件中有com.google.ads包。因此,我们的应用程序被某些移动安全应用程序标记为广告应用程序。我从google-play-services.jar中删除了com.google.ads包,GCM推送仍然可以正常使用精简版jar。
通过从Google Play服务jar文件中删除某些文件是否存在问题?你以前见过同样的问题吗?不知何故,我无法通过互联网搜索看到任何相关信息。
答案 0 :(得分:2)
这不应该是一个问题,因为没有人试图加载任何这些类。
认为在java中按需加载类,因为您可以阅读here:
Java类加载器是Java运行时环境的一部分 将Java类动态加载到Java虚拟机中。1 通常只按需加载类。 Java运行时系统 不需要知道文件和文件系统因为 类加载器。
因此,jar中存在或应该存在的类不会以任何方式解析,无论它是什么内容,它只是应用程序可能调用的一堆资源。实际上,jar只是一个库,它提供的类可以作为应用程序和设备中安装的其他东西之间的桥梁,但是只加载你需要的类。
此外,只要内容没有“密封”,就不会检查内部文件的一致性。正如您可以阅读here,
包装密封:可以选择密封存储在JAR文件中的包 这样包可以强制实现版本一致性。密封包装 在JAR文件中意味着该包中定义的所有类必须 可以在同一个JAR文件中找到。
包装可以密封,但如果你已经打破了罐子,在一个设备上试过它,它就可以了,这意味着它没有密封。
因此,就您实际需要的类而言,它们的版本是正确的,没有其他任何事情可以发生。