我正试图摆脱Google Play Services库中未使用的类.我用单个空活动创建了全新的
android项目.该项目不使用Google Play服务库中的任何内容.所以我希望,当我构建版本(包括在我的配置中运行proguard)时,我会发现二进制大小与使用/不使用play-services依赖的构建相比没有区别.但实际上,我看到apk大小差异大约700 KB.
我找到了relatively complex solution,using gradle script,其中涉及重新打包play-services.jar文件.此外,此解决方案需要明确指定不会使用的每个包.但我不明白为什么不能在我的案例中做这项工作呢?
的build.gradle:
apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 10 targetSdkVersion 21 } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro' } } } dependencies { // !!! when I comment the line below,release APK is 700 KB smaller !!! // compile 'com.google.android.gms:play-services:6.5.87' }
proguard-rules.pro:
-assumenosideeffects class android.util.Log { public static *** d(...); }
AndroidManifest.xml中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.noplayservices"> <application android:allowBackup="true" android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> <activity android:name=".ui.activities.MainActivity" android:icon="@drawable/ic_launcher"> <intent-filter> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
MainActivity.java:
package com.test.noplayservices.ui.activities; import android.app.Activity; import android.os.Bundle; import com.test.noplayservices.R; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance); setContentView(R.layout.main_activity); } }
解决方法
从Google Play Services 6.5及更高版本中,您可以选择要使用的API,并仅导入这些API.也许这会帮助你减少一点点的APK大小.这是一个清单:
Google+ com.google.android.gms:play-services-plus:6.5.+ Google Account Login com.google.android.gms:play-services-identity:6.5.+ Google Activity Recognition com.google.android.gms:play-services-location:6.5.+ Google App Indexing com.google.android.gms:play-services-appindexing:6.5.+ Google Cast com.google.android.gms:play-services-cast:6.5.+ Google Drive com.google.android.gms:play-services-drive:6.5.+ Google Fit com.google.android.gms:play-services-fitness:6.5.+ Google Maps com.google.android.gms:play-services-maps:6.5.+ Google Mobile Ads com.google.android.gms:play-services-ads:6.5.+ Google Panorama Viewer com.google.android.gms:play-services-panorama:6.5.+ Google Play Game services com.google.android.gms:play-services-games:6.5.+ Google Wallet com.google.android.gms:play-services-wallet:6.5.+ Android Wear com.google.android.gms:play-services-wearable:6.5.+ Google Actions Google Analytics Google Cloud Messaging com.google.android.gms:play-services-base:6.5.+
您可以看到有关此here的更多信息.