如何删除从Google Play服务库导入的未使用的Google+图标

时间:2014-04-09 15:54:16

标签: android google-play-services

我已在我的Android Studio项目中将AdMobs横幅广告迁移到Google Play服务。由此产生的APK从0.7 MB增加到超过1.6 MB。幸运的是,ProGuard将其降低到超过1 MB。我戳了一下APK,注意到280 kB" g +"图像已添加到

res/
 drawable-hdpi
 drawable-mdpi
 drawable-xhdpi
 drawable-xxhdpi

enter image description here

我没有计划在此应用中使用Google+。它是一个实用程序应用程序,没有必要处理社交媒体。与多兆字节应用程序相比,280kB可能听起来像花生,但作为一个相对简单的实用程序,用户希望它尽可能小。它只是感觉很脏,发布了一个新版本,从大约700 kB到超过1000 kB,没有为用户带来明显的功能改进。

理想情况下,我只想为一个项目排除这些图标,但我现在可以使用全球解决方案。

4 个答案:

答案 0 :(得分:2)

如果您使用的是Gradle,则可以将shrinkResources选项与ProGuard结合使用以排除资源。这会删除您的资源以及您的depndencies正在使用的资源。

buildTypes {
  release {
    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  }
}

截至2015年4月,似乎还有一个bug因为某些资源(包括Google Play图标)无法删除。您可以通过创建keep.xml文件并指定应删除哪些资源来解决此问题。请记住在此之后测试您的APK,因为删除实际需要的资源可能会导致您的应用崩溃!

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
   tools:discard="@drawable/common_signin_*,@drawable/ic_plusone_*,@drawable/powered_by_google_*"/>

删除这些图像会使APK的大小减少约300kB。

答案 1 :(得分:2)

我遇到了这个错误:

“... \ Application \ build \ intermediates \ explosion-aar \ com.google.android.gms \ play-services-base \ 7.3.0 \ res \ drawable-xxhdpi \ common_signin_btn_icon_disabled_focus_light.9.png错误:无法使用打开PNG文件“

Android Studio无法打开common_signin_btn_icon_disabled_focus_light.9.png文件。

为了解决这个问题,我将项目文件夹目录向上移动了一两级,以减少路径长度。之后一切都很完美。

我使用了“D:\ the_project_folder”。为我工作。没有更多的编译错误。

感谢此链接:

https://github.com/googlesamples/android-XYZTouristAttractions/issues/2

干杯!

答案 2 :(得分:1)

到目前为止,最好的两个选项是在名为g +图标的项目中添加微小的位图或别名。这些取代了GPS库中的图标。图标位于每个drawable- *目录中,文件名如下:

res/
 drawable-hdpi/
 drawable-mdpi/
 drawable-xhdpi/
 drawable-xxhdpi/
        common_signin_btn_icon_disabled_dark.9.png
        common_signin_btn_icon_disabled_focus_dark.9.png
        common_signin_btn_icon_disabled_focus_light.9.png
        common_signin_btn_icon_disabled_light.9.png
        common_signin_btn_icon_focus_dark.9.png
        common_signin_btn_icon_focus_light.9.png
        common_signin_btn_icon_normal_dark.9.png
        common_signin_btn_icon_normal_light.9.png
        common_signin_btn_icon_pressed_dark.9.png
        common_signin_btn_icon_pressed_light.9.png
        common_signin_btn_text_disabled_dark.9.png
        common_signin_btn_text_disabled_focus_dark.9.png
        common_signin_btn_text_disabled_focus_light.9.png
        common_signin_btn_text_disabled_light.9.png
        common_signin_btn_text_focus_dark.9.png
        common_signin_btn_text_focus_light.9.png
        common_signin_btn_text_normal_dark.9.png
        common_signin_btn_text_normal_light.9.png
        common_signin_btn_text_pressed_dark.9.png
        common_signin_btn_text_pressed_light.9.png
        ic_plusone_medium_off_client.png
        ic_plusone_small_off_client.png
        ic_plusone_standard_off_client.png
        ic_plusone_tall_off_client.png

我创建了一个小的9补丁位图,复制并命名为可绘制目录中的每个文件。你几乎看不到它---&gt; very tiny

另一种方法是创建别名。每个文件一个位图别名,因此您最终会得到相同数量的文件。例如:

res/
 drawable/
        blank.png
 drawable-xxhdpi/
        common_signin_btn_icon_disabled_dark.9.xml
        ...

每个别名XML都引用了一个小的:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/blank" />

微小位图和别名之间的大小差异可以忽略不计。是的,它是一个黑客,但在Google / ProGuard自动删除未使用的位图之前,这可能是恢复浪费空间的唯一方法。感谢CommonsWare的帮助。

答案 3 :(得分:1)

作为一个更简单的替代方法,只需删除drawable-xxhdpi,drawable-xhdpi和drawable-hdpi中的.png文件,将其保留在drawable-mdpi中。当然,首先检查文件名是否也存在于drawable-mdpi中。

留下一个有效的解决方案是更安全的恕我直言,drawable-mdpi文件占用不到30KB,这可能是许多人可以接受的。