- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否可以从 Google Play 服务库中删除不需要的包,以便该库仅包含 Google Analytics 所需的所有内容?
我问这个是因为 Google Play 服务库中充斥着我认为 Google Analytics 未使用的额外包、图像和资源。
最佳答案
默认情况下,Proguard 会从 jar 文件中删除未使用的代码,也会从 Google Play 服务库中删除。但是 proguard 不能用于删除(未使用的)资源,但我发现还有其他选项可以进一步优化库。
我能够使用方法二将应用程序从 1827 KB
缩小到 1115 KB
。我测试了该应用程序,它运行良好,并且 Google Analytics(分析)统计数据按预期出现在在线仪表板上。
第一种方法可能是最简单的。
第 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 将忽略这些文件丢失的事实,并且不会因错误而退出。
方法二是方法一的优化版。不同之处在于,不是将 google-play-services.jar 文件从库项目复制到您自己的项目,而是首先使用混淆器优化库。
因此,您要做的是仅在 google-play-services.jar 文件上手动运行 proguard。为了仅保留 Google Analytics,我使用了这个混淆设置文件。
-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 文件复制到 sdk\tools\proguard\lib
文件夹。
第 2 步:将您的混淆器设置文件复制到 sdk\tools\proguard\lib
文件夹。
第 3 步:使用您的设置文件运行 progaurd:
在 Windows 上:打开命令窗口 -> 导航到 sdk\tools\proguard\lib
文件夹 -> 使用以下命令运行 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 - 缩小 Google Play 服务库以仅与 Google Analytics 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891208/
所以我的应用程序的评论显示在我的游戏控制台中,但是由于某种原因,当我在 google Play 商店上访问我的应用程序链接并以普通用户的身份查看它时,我没有收到新评论的通知,我的显示了 13 条评论,
一旦我在 2.3 play 项目上运行 'sbt compile',我就不能再使用 'sbt compile' 来编译任何 Play 2.2.x 项目。这是我运行 sbt 命令时的错误。 [info]
我有点困惑,想得到一个解释。 我正在使用 Java Play 2 和 Akka Actor 。我使用 play run 启动系统。 不过,我刚刚看到一个视频,使用了命令: play akka star
当我玩游戏时,我遇到两个选择play.api.mvc和 play.mvc包裹 有什么不同? 最佳答案 从戏! 2 文档: The API available in the play.api packa
从 2.3 迁移到 2.4 后,我收到此错误。我应该使用的正确导入语句是什么? error: value routesImport is not a member of object play.Pla
所以我在 google play 上有一个应用程序已经将近 6 个月了,最近两个月我更新了我的应用程序屏幕截图,从那时起,每次我更新我的应用程序时,我都开始收到应用程序拒绝。 上次我提出上诉并被接受,
我有以下代码: Snapshots.OpenSnapshotResult result; result = Games.Snapshots.open(googleApiClient, "save",
在过去 72 小时内,我为 Google Play 开发者计划支付的 Google 电子钱包付款显示为“您的购买正在处理中”。我知道这可能需要长达 48 小时,但这是他们处理时间最坏情况之后的一整天。
我在 Play 商店发布了应用程序,我不知道为什么应用程序显示预注册,我想为我的用户提供直接下载选项。伸出援手将不胜感激。 最佳答案 instructions for pre-registration
我有一个 PHP 后端,它与 Google Play 服务集成以验证从 APP 进行的购买。购买信息返回收据和签名,我需要验证购买是否正确。 我收到: { ...rest of the data
我在 Google Play Developer Console 上创建了我的 Android 应用程序的草稿。我已经填写了所有需要的信息。必需的步骤之一是“内容评级”。我已填写表格以自动分配 Goo
我已经设置好了 com.typesafe.play play_2.13 2.7.4 在项目 pom.xml 中。但是,当我尝试遵循this tutorial时,语句 pla
我在 Play 商店上发布了一个应用程序,并收到了一些评论。在Google Play开发者控制台中,我在一些评论中看不到应用程序的版本。这是我在“应用程序”标题下找到的内容。 版本代码 — 版本名称
假设 A 是所有者。我希望我们团队的 B、C 和 D 用户能够上传我们应用程序的新版本。这可能吗?来自 this我不太清楚用户有什么样的权限。如果有人对这部分有任何经验,欢迎。 最佳答案 您需要 go
我正在尝试将应用重新提交到 Google Play,但我似乎可以找到一种技术上的方法来实现此目的。 我对“您的应用主要针对 COPPA 定义的 13 岁以下 child 吗?”的回答是肯定的,然后在不
我想分享一下我在分析 Google Play 控制台的新功能时遇到的情况,并尝试找到解决方案。 正如你们许多人可能已经知道的那样,Google 已在 Google Play 控制台上发布了更新并引入了
我有两个用 playframework 编写的应用程序。我想加入另一个。我有一个数据库,我想在它们之间共享我的登录类。应用程序对类、方法、变量使用不同的名称。 我怎样才能实现它?我应该创建 jar 版
对于我的硕士论文,我需要自动将来自 Google Play 的不同 Android 应用程序的信息写入一个文本文件。所以我使用 perl 脚本语言来实现这种自动化。我的 perl 脚本可以在 Goog
我想测试子项目是如何工作的,尤其是 routes在主项目 ( this was not visible before ) 中考虑了子项目的数量。 我在这里阅读了文档: https://github.c
我正在使用 Play 框架 2.1.2,我有一个 handlere 方法返回一个 Promise,如 Play 的 2.1.2 documentation 中所述 但是 Play 抛出编译错误说: C
我是一名优秀的程序员,十分优秀!