使用google-play-services_lib添加admob广告后Android应用尺寸增加

j.c*_*j.c 6 android proguard admob

我将以两种版本发布我的应用程序,包括付费和免费(使用AdMob广告).
除了我在AdMob服务的免费版本中使用的google-play-service_lib之外,这两个版本完全相同.

使用proguard后的最终apk大小为: 广告版本的
付费版本
1.946.634字节为1.301.435字节

在免费版中,我只会展示插页式广告.

这是我相对于google-play-service_lib的proguard设置

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的事情来减少文件大小,如删除一些-keep标志或什么?

编辑

使用apktool我发现没有一个类从谷歌Play业务包已经萎缩(包括com.google.android.gms.maps.*,com.google.android.gms.games.*和许多其他人,我认为不需要对广告的管理).

如何强制缩小类或类组?

编辑(再次)

看起来Eclipse并没有保留Proguard输出,至少我无法在任何地方看到它.然后我配置我的项目和库使用Ant构建以查看一些输出,但它几乎没有实质性,这是两种情况:

 -whyareyoukeeping class com.google.android.gms.maps.GoogleMap

 [proguard] Explaining why classes and class members are being kept...
 [proguard] Printing usage to [...../bin/proguard/usage.txt]...
 [proguard] com.google.android.gms.maps.GoogleMap
 [proguard]   is not being kept.
Run Code Online (Sandbox Code Playgroud)

(至少我读过那个类没被保留,虽然我可以使用apktool看到它!)和

 -whyareyoukeeping class com.google.android.gms.games.Games

 [proguard] Explaining why classes and class members are being kept...
 [proguard] Printing usage to [...../bin/proguard/usage.txt]...
Run Code Online (Sandbox Code Playgroud)

关于给定的课程没有任何说法.

我放弃了,对于单个插页式广告,我的应用将其规模增加了50%,尽管谷歌有关GPS的说法:

如果您在构建过程中使用ProGuard,则客户端库占用空间小,因此不会对应用程序的文件大小产生负面影响.

没有 - 我可以找到它的指南!

小智 13

它与proguard无关.如你所知,谷歌播放服务是密切的来源.没有源代码,proguard无法处理它.但你可以手动收缩它.

1,从jar文件中删除未使用的类

在google play服务的文件夹中,通常是sdk\extras\google\google_play_services\libproject\google-play-services_lib\libs \,用zip文件管理器打开google-play-services.jar,如7zip,你可以找到很多这样的文件夹如果您只使用广告,那么女巫对你来说是没用的.所以只需删除它们.小心保留广告,常用,动态,内部位置文件夹,否则您将在展示广告时获得NoClassDefFoundError的fc.

2,如果您只使用广告,请从res文件夹中删除未使用的资源.

google-play-services_lib\res文件夹中的许多资源对您没用,您可以将其删除.例如values-af,values-am,....你需要保留的是color,drawable,drawable-hdpivalues文件夹.

3,现在在eclipse中刷新并构建google-play-services_lib项目,然后再次刷新并构建项目.现在你知道发现apk尺寸变小了.我的APK的大小,从下井902KB480KB proguard的面前,330KB的ProGuard之后.


Wil*_*iam 2

proguard 配置的其他部分导致 GPS 类被保留。

看看Proguard 使用特别是选项

-为什么你要保留类规范

如果您自己无法发现它,您可以用它来告诉您为什么保留特定的类。