【问题标题】:Is the Google Play Services Lib compiled with my app?Google Play Services Lib 是否与我的应用一起编译?
【发布时间】:2015-01-21 19:50:05
【问题描述】:
我对设备如何编译/使用 Google Play 服务感到有些困惑。
我读到 Google Play 服务是通过 Play 商店在设备上更新的。
我还读到,由于 Google Play 服务库被编译到他们的应用程序中,人们的应用程序的大小增加了。
这两点对我来说似乎是冲突的,所以也许我误解了一些东西。
所以:
1:谷歌播放服务功能是否从应用程序外部运行?
2:Google Play 服务真的编译成应用了吗?
3:如果以上两个都成立,使用哪个版本?
4:如果我有一个使用 GPS 的 lib jar 并且主 App 也使用 GPS,GPS 是否会被包含两次?
感谢您提供任何可以带来更清晰的信息。
【问题讨论】:
标签:
android
google-play-services
【解决方案1】:
1:Google Play 服务功能是否在应用外部运行?
调用来自您的应用,并以您的应用名称运行(许可方式)。但是,调用由 Google Play 服务包接收,执行的代码也包含在 Play 中服务。
2:Google Play 服务是否真的被编译成应用程序?
否,Google Play 服务是单独安装在您的设备上的。 Play 服务界面会编译到您的应用中。
3:如果以上两个都成立,使用哪个版本?
始终使用来自“Google Play 服务”应用的代码。而且它大多是向后兼容的(因此旧界面可以安全地使用新的 Play 服务)。
4:如果我有一个使用 GPS 的 lib jar 并且主 App 也使用 GPS,GPS 是否会被包含两次?
如果这些 .jar 的大小不同(意味着它们是不同的版本),编译器应该警告您并中止。如果两者相同,则项目编译并GPS 接口仅包含一次。这没关系,因为您不能有多个具有相同全名的类。
【解决方案2】:
Google Play 服务是安装在每部带有 Play 商店的手机上的系统应用。它处理与 Google 服务器的通信,并在所有需要访问它所包含的服务的应用程序中协调请求、处理缓存等。
您的应用程序中包含的是 Google Play 服务库,它处理您的应用程序连接到 Google Play 服务应用程序,通过 Google Play 服务应用程序转发来自您的应用程序的请求(并最终在适当的情况下转发到 Google 以完成请求)。
因此流程是这样的:
your app -> Google Play Services library -> Google Play Services app -> Google
与任何库一样,最终 APK 中只存在一个版本。