Cómo evitar el límite de 65k método al utilizar Google Play Services
Si te encuentras escribiendo una gran aplicación de Android que depende de muchas bibliotecas diferentes (que recomendaría en lugar de reinventar la rueda), es muy probable que ya hayas encontrado el límite de 65k del archivo ejecutable de classes.dex
Dalvik. Además, si depende de bibliotecas grandes como el SDK de Google Play Services que ya contenía más de 20k métodos en la versión 5.0 , se ve obligado a utilizar trucos como paquetes de eliminación o soporte multidex para evitar errores durante el proceso de empaquetado. Con el nuevo ARV de ejecución de Android, que está disponible públicamente, ya que Android Lollipop múltiples archivos dex son más fáciles de manejar, pero actualmente los desarrolladores todavía se ven obligados a hacer el método de contar.
¿Cuál es la forma más sencilla de reducir el recuento de métodos de su aplicación mientras utiliza Google Play Services?
- Uses-sdk: minSdkVersion 7 no puede ser menor que la versión 9 declarada en la biblioteca
- Cómo hacer que la alerta de Geo Fencing sea más precisa en Android
- En mi aplicación no estoy recibiendo velocidad en el objeto de ubicación en Moto G 3rd generation Android 6.0 móvil
- Servicio GeoCoder no disponible
- La compilación del proyecto Android se ejecutó correctamente pero se ejecutó con error: java.util.zip.ZipException: entrada duplicada
- Problema con Google Fit API en Android Wear
- Servicio de Android con la ubicación de los servicios de Google Play que hace que la aplicación se abra al azar
- Encontrado com.google.android.gms: play-services-gcm: 8.3.0, pero se necesita la versión 8.1.0
- Android play services 6.5: LocationClient falta
- ¿Qué tan seguro es GoogleAuthUtils.getToken () si la aplicación se descompila
- OnMapReady no llamando aunque la visualización del mapa sin ningún error
- ¿Cómo capturar los valores de los códigos de barras con la nueva API de código de barras en Google Play Services?
- Android "Not_Market_Managed" error
El mayor cambio para los desarrolladores que vino con la versión 6.5 de los servicios de Google Play fue probablemente la administración de dependencia granular . Google logró dividir su biblioteca para permitir a los desarrolladores depender sólo de ciertos componentes que realmente necesitan para sus aplicaciones.
Dado que los desarrolladores de la versión 6.5 ya no están obligados a implementar la biblioteca completa de Google Play Services en su aplicación, sino que pueden depender selectivamente de componentes como este:
compile 'com.google.android.gms:play-services-fitness:6.5.+' compile 'com.google.android.gms:play-services-wearable:6.5.+' compile 'com.gogole.android.gms:play-services-maps:6.5.+' ...
Si desea compilar la biblioteca completa en su aplicación, todavía puede hacerlo:
compile 'com.google.android.gms:play-services:6.5.+'
Puede encontrar una lista completa de paquetes disponibles en el sitio de desarrolladores de Android .
Para alguien que no utilice Android Studio w/gradle
o no quiera implementar ProGuard
en su proyecto.
Es posible evitar 65k mientras usa google-play-services manteniendo algunos paquetes que realmente desea usar usando jarjar. Por ejemplo, en mi proyecto quiero implementar sólo google map y google ubicación, inclino mi google-play-services.jar como este.
-
Descargar jarjar AQUÍ
-
Crear nueva llamada de archivo 'services.rules'
-
Editarlo como sigue
Mantenga com.google.android.gms.maps. *
Mantenga la ubicación com.google.android.gms. *
-
Copia tus google-play-services.jar / jarjar-1.4.jar / services.rules originales en la misma carpeta
-
Inicie el símbolo del sistema y escriba ..
Java -jar jarjar-1.4.jar proceso services.rules google-play-services.jar google-lean.jar
Eso es lo que obtendrá un nuevo .jar que el tamaño se redujo mucho (método también)
Usarlo instalado de google-play-services.jar y dex más de 56k se ha ido.
Aquí está .jar que era magra ya como mención arriba.
Sé que esta pregunta es vieja, pero para aquellos de ustedes que se enfrentan a este problema mientras se trabaja en eclipse y no puede utilizar la respuesta anterior
Por favor siga los pasos
Si no desea descargar android studio para obtener los proyectos lib puede descargar archivos lib desde aquí https://www.dropbox.com/s/1pf73czcn7pyqgi/com.google.android.gms.rar?dl=0 y Salte al paso 4
1 – en primer lugar que todavía necesita el estudio de Android para descargar sus dependencias se puede descargar desde aquí
https://developer.android.com/sdk/index.html
2 – entonces en tu build.gradle dentro de tu aplicación agrega las líneas abajo
dependencies { compile 'com.google.android.gms:play-services-maps:7.5.0' //map , gcm or any specific api for a hole list visit the below link //https://developers.google.com/android/guides/setup }
Y luego pulse el proyecto de sincronización con el archivo gradle
Después de que usted llegará a los proyectos de lib
Play-services-base play-servicios-mapas
Haga clic derecho sobre ellos para obtener su ruta
4 – crear proyecto dentro de eclipse eliminar los archivos generados dentro de la carpeta src, la carpeta res y el manifiesto
5- copia res y manifiestos de play-services-base a su proyecto
6 – copie el archivo dentro de play-services-base / jars a la carpeta libs de su proyecto normalmente denominada classes.jar (cambie el nombre a cualquier otro nombre para que no entre en conflicto con otro proyecto)
7- agregar este tarro para construir caminos luego haga clic derecho en proyecto / propiedades / java construir ruta / ordenar y exportar ficha check the added jar
8- clic derecho sobre proyecto / propiedades / android / check is lib
9- hacer los mismos pasos para play-services-maps
10 – ahora tienes a lib proyectos uno se llama googleBase y el otro se llama googleMaps (o cualquier otro nombre)
11 – agregarlos a su proyecto como bibliotecas
Ahora agregue las siguientes líneas a su manifiesto
<!-- Include required permissions for Google Maps API to run--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="" />
Para un tutorial completo con imágenes, consulte el siguiente enlace http://androidninja.quora.com/Prevent-65-K-Methods-Count-When-Using-Google-Lib-on-Android-with-eclipse-adt