0

最近我用于Fused Location API定位目的。在应用 google play 服务库之前com.google.android.gms:play-services:8.3.0,应用程序大小为4.3MB(4,499,239 字节),但在使用此 api 后,它增加到5.8 MB(6,085,932 字节)。项目中只添加了一个类。即LocationService.java我从服务类调用它,这里是代码。

定位服务.java

 public class LocationServiceRACE implements
            GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
        private GoogleApiClient mGoogleApiClient;

        private LocationRequest mLocationRequest;

        public LocationServiceRACE(Context serviceContext) {
            mGoogleApiClient = new GoogleApiClient.Builder(serviceContext)
                    .addApi(LocationServices.API)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();
        }

        public GoogleApiClient getmGoogleApiClient() {
             return this.mGoogleApiClient;
        }

        @Override
        public void onConnected(Bundle bundle) {
            if (mGoogleApiClient.isConnected())
            startLocationUpdates();
        }

        @Override
        public void onConnectionSuspended(int i) {

        }

        @Override
        public void onLocationChanged(Location location) {

        }

        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) {

        }

        protected void startLocationUpdates() {
            mLocationRequest = LocationRequest.create();
            mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
            mLocationRequest.setInterval(60000); // Update location every 60 second
            mLocationRequest.setSmallestDisplacement(100);
            LocationServices.FusedLocationApi.requestLocationUpdates(
                    mGoogleApiClient, mLocationRequest, this);
        }
    }

除了 Fused Location 之外,我没有使用其他 api,并且在添加 google play 服务后,ProGuard 中没有添加/更改任何内容。如何减少我只需要fused locationapi 的应用程序大小?

4

2 回答 2

3

看看这里设置 Google Play 服务:

https://developers.google.com/android/guides/setup

它被分解为模块,因此您可以只导入您需要的 API。在您的情况下,您只需要

com.google.android.gms:play-services-location:8.3.0

代替

com.google.android.gms:play-services:8.3.0

这是整个包裹。

此外,如果您在打包结束时(minifyEnabled true在您的内部build.gradle)运行 Proguard,它将删除您的代码库未使用的类,从而进一步最小化最终 APK 的大小。

于 2015-11-25T06:11:39.103 回答
1

仅使用位置依赖性怎么样?

com.google.android.gms:play-services-location:8.3.0

于 2015-11-25T06:11:26.423 回答