缩小 Google Play 服务库,仅供 Google Analytics(分析)使用



是否可以从Google Play服务库中删除不必要的包,以便该库仅包含Google Analytics所需的所有内容?

我问这个是因为Google Play服务库充斥着额外的软件包,图像和资源,我认为Google Analytics未使用它们。

Proguard 默认也会从 Google Play 服务库中删除 jar 文件中未使用的代码。但是 proguard 不能用于删除(未使用的(资源,但我发现还有其他选项可以进一步优化库。

我能够使用方法二将应用程序从1827 KB缩小到1115 KB。我测试了该应用程序,它运行良好,并且Google Analytics静态数据按预期显示在在线仪表板上。

<小时 />

方法1:只需包含google-play-services.jar文件并忽略R警告。

第一种方法可能是最简单的。

第 1 步:将 google-play-services.jar 文件从库项目复制到您自己的项目中,并将其粘贴到 libs 文件夹中。

第 2 步:从您的项目中移除对原始 google-play-services_lib 项目的库引用。

Right click on your project -> Properties -> Android -> Select library -> Remove

第 3 步:将 dontwarn 标志添加到您的 progruard 设置文件中。

-dontwarn com.google.**.R
-dontwarn com.google.**.R$*

说明:google-play-services-jar 包含对生成的 Java 文件 (R.java( 的引用。这些文件通常是在构建google-play-services_lib项目时生成的。Proguard 通常会警告您(通过错误退出(在优化 google-play-services.jar 文件时缺少这些文件。通过添加 dontwarn 标志,proguard 将忽略这些文件丢失的事实,并且不会因错误而退出。

<小时 />

方法2:创建一个优化的谷歌播放服务(-分析(.jar

方法

二是方法一的更优化版本。不同之处在于,与其将 google-play-services.jar 文件从库项目复制到您自己的项目中,不如首先使用 proguard 优化库。

所以你要做的是手动运行proguard只在google-play-services.jar文件上。为了只保留谷歌分析,我使用了这个专业保护设置文件。

-injars google-play-services.jar
-outjars google-play-services-analytics.jar
-libraryjars [add your path to sdk]/sdk/extras/android/support/v4/android-support-v4.jar
-libraryjars [add your path to sdk]/sdk/platforms/android-21/android.jar
-dontoptimize
-dontobfuscate
-dontwarn com.google.**.R
-dontwarn com.google.**.R$*
-dontnote
-keep public class com.google.android.gms.analytics.**, com.google.android.gms.common.**, com.google.android.gms.location.** {
    public protected *;
}
-keep class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    java.lang.String NULL;
}

第 1 步:将 google-play-services.jar 文件从库项目复制到sdktoolsproguardlib文件夹。

第 2 步:将 proguard 设置文件复制到sdktoolsproguardlib文件夹。

第 3 步:使用您的设置文件运行程序:

在窗口上:打开命令窗口 ->导航到sdktoolsproguardlib文件夹 -> 使用以下方式运行 proguard:

java -jar proguard.jar @analytics-settings.txt

第 4 步:使用本文中介绍的第一种方法将优化的 google-play-services-analytics.jar 添加到您的项目中。(不要忘记第一种方法中的第 3 步!

<小时 />

优化结果

Before + proguard = 1827 KB
Method 1 = 1206 KB
Method 2 = 1115 KB

android-studio 中,你可以选择喜欢使用的库:

更新 13 六月 , 2017

您可以使用此版本的游戏服务:

  • 2017 年 6 月 - 版本 11.0.0
  • 2017 年 5 月 - verson 10.2.6
  • 2017 年 4 月 - 版本 10.2.4
  • 2017 年 3 月 - 版本 10.2.1
  • 2017 年 2 月 - 版本 10.2
  • 2016 年 11 月 - 版本 10.0
  • 2016 年 10 月 - 版本 9.8
  • 2016 年 9 月 - 版本 9.6
  • 2016 年 8 月 - 版本 9.4
  • 2016 年 6 月 - 版本 9.2
  • 2016 年 5 月 - 版本 9.0
  • 2015 年 12 月 - 版本 8.4
  • 2015 年 11 月 - 版本 8.3
  • 2015 年 9 月 - 版本 8.1
  • 2015 年 8 月 - 版本 7.8
  • 2015 年 5 月 - 版本 7.5

谷歌+

com.google.android.gms:play-services-plus:11.0.0

谷歌帐户登录

com.google.android.gms:play-services-auth:11.0.0

谷歌行动,基本客户端库

com.google.android.gms:play-services-base:11.0.0

谷歌地址接口

com.google.android.gms:play-services-identity:11.0.0

谷歌应用索引

com.google.android.gms:play-services-appindexing:11.0.0

谷歌应用邀请

com.google.android.gms:play-services-appinvite:11.0.0

谷歌分析

com.google.android.gms:play-services-analytics:11.0.0

谷歌演员表

com.google.android.gms:play-services-cast:11.0.0

谷歌云消息传递

com.google.android.gms:play-services-gcm:11.0.0

谷歌云端硬盘

com.google.android.gms:play-services-drive:11.0.0

谷歌健身

com.google.android.gms:play-services-fitness:11.0.0

Google 位置、活动识别和地点

com.google.android.gms:play-services-location:11.0.0

谷歌地图

com.google.android.gms:play-services-maps:11.0.0

谷歌移动广告

com.google.android.gms:play-services-ads:11.0.0

移动视觉

com.google.android.gms:play-services-vision:11.0.0

谷歌附近

com.google.android.gms:play-services-nearby:11.0.0

谷歌全景查看器

com.google.android.gms:play-services-panorama:11.0.0

谷歌玩游戏服务

com.google.android.gms:play-services-games:11.0.0

安全网

com.google.android.gms:play-services-safetynet:11.0.0

谷歌钱包

com.google.android.gms:play-services-wallet:11.0.0

安卓穿戴

com.google.android.gms:play-services-wearable:11.0.0

Google Play Services 6.5+ 更新(仅适用于 gradle(

在 Google Play Services 6.5 版本中,现在只需将库的一部分添加到您的应用项目中即可。目前,这仅适用于基于 gradle 的构建。

通常,您会将 Play 服务作为依赖项添加到 gradle 文件中,如下所示:

compile 'com.google.android.gms:play-services:9.4.0'

从版本 6.5 开始,您可以指定不想添加的确切模块。如以下示例所示,用于游戏和分析模块。

Google+
com.google.android.gms:play-services-plus:9.4.0
Google Account Login
com.google.android.gms:play-services-auth:9.4.0
Google Actions, Base Client Library
com.google.android.gms:play-services-base:9.4.0
Google Address API
com.google.android.gms:play-services-identity:9.4.0
Google App Indexing
com.google.android.gms:play-services-appindexing:9.4.0
Google App Invites
com.google.android.gms:play-services-appinvite:9.4.0
Google Analytics
com.google.android.gms:play-services-analytics:9.4.0
Google Awareness
com.google.android.gms:play-services-contextmanager:9.4.0
Google Cast
com.google.android.gms:play-services-cast:9.4.0
Google Cloud Messaging
com.google.android.gms:play-services-gcm:9.4.0
Google Drive
com.google.android.gms:play-services-drive:9.4.0
Google Fit
com.google.android.gms:play-services-fitness:9.4.0
Google Location and Activity Recognition
com.google.android.gms:play-services-location:9.4.0
Google Maps
com.google.android.gms:play-services-maps:9.4.0
Google Mobile Ads
com.google.android.gms:play-services-ads:9.4.0
Google Places
com.google.android.gms:play-services-places:9.4.0
Mobile Vision
com.google.android.gms:play-services-vision:9.4.0
Google Nearby
com.google.android.gms:play-services-nearby:9.4.0
Google Panorama Viewer
com.google.android.gms:play-services-panorama:9.4.0
Google Play Game services
com.google.android.gms:play-services-games:9.4.0
SafetyNet
com.google.android.gms:play-services-safetynet:9.4.0
Android Pay
com.google.android.gms:play-services-wallet:9.4.0
Android Wear
com.google.android.gms:play-services-wearable:9.4.0

更多信息和所有模块的完整列表可以在这里找到:设置 Google Play 服务

不错的罗尔夫!!

这是我的GCM设置文件

-injars google-play-services.jar
-outjars google-play-services-gcm.jar
-libraryjars [add your path to sdk]/sdk/extras/android/support/v4/android-support-v4.jar
-libraryjars [add your path to sdk]/sdk/platforms/android-21/android.jar
-libraryjars [add your path to sdk]/sdk/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar
-dontoptimize
-dontobfuscate
-dontwarn com.google.**.R
-dontwarn com.google.**.R$*
-dontnote
-keep public class com.google.android.gms.gcm.**, com.google.android.gms.common.**, com.google.android.gms.iid.** {
    public protected *;
}
-keep class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    java.lang.String NULL;
}

最新更新