我已在我的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
我没有计划在此应用中使用Google+。它是一个实用程序应用程序,没有必要处理社交媒体。与多兆字节应用程序相比,280kB可能听起来像花生,但作为一个相对简单的实用程序,用户希望它尽可能小。它只是感觉很脏,发布了一个新版本,从大约700 kB到超过1000 kB,没有为用户带来明显的功能改进。
理想情况下,我只想为一个项目排除这些图标,但我现在可以使用全球解决方案。
答案 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;
另一种方法是创建别名。每个文件一个位图别名,因此您最终会得到相同数量的文件。例如:
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,这可能是许多人可以接受的。