2014-10-22 7 views
5

Ich frage mich, ob es eine Möglichkeit gibt, google-play-services.jar anzupassen.Wie kann Google Play Services angepasst werden, um die Größe des Jugs zu verringern?

Google play services version 6.1

fand ich, dass eine neue Version 24K Methoden, die aus Max Methode count (~ 65K) und deshalb kann ich nicht erstellen APK-Datei (oder DEX) meine Anwendung macht.

In der Vergangenheit sah ich auf einer Website, die Sie konfigurieren können google-play-services.jar durch Aktivieren/Deaktivieren ungenutzten Features.

Mein altes Glasgewicht ist 7K (statt 19K) und ich kann nicht zu 24K springen, zu expansiv.

Irgendwelche Vorschläge bitte?

[EDIT]

Ich fand this Frage, wo @Eric Lafortune Proguard

+0

Hast du probiert, ProGuard einzuschalten? – Squeazer

+0

@Squeazer Ja, ich dachte, proGuard zu verwenden, aber ich erinnere mich, dass ich vor Ort Flags mit Funktionen aktivieren/deaktivieren konnte und angepasste Jar herunterladen konnte. Heute kann es nicht finden – snaggs

Antwort

4

Unter Berücksichtigung der Tatsache, dass:

  • Verwenden Proguard immer
  • empfohlen
  • MultiDex trotz Zugabe von Overhead zur Laufzeit, ist die einzige praktikable Lösung , wenn Sie wirklich alle diejenigen verwenden Methoden (was selten der Fall ist!)

I Wenn Sie Gradle verwenden und nur die Teile von Play Services, die Sie nicht verwenden, automatisch ausschließen möchten, ist dies der einfachste, schnellste und effizienteste Weg: https://gist.github.com/Takhion/10a37046b9e6d259bb31.

Fügen Sie es einfach als Vorschlag hinzu und kommentieren Sie die exclude auf die Teile, die Sie benötigen!

Sooo nützlich für Debugbuilds, wo Sie nicht durch Proguard jedes Mal gehen wollen;)

+0

Wie starte ich dein Skript, danke? – snaggs

+0

@fessy hinzufügen 'strip_play_services.gradle' im selben Ordner wo du die App 'build.gradle' hast und innerhalb dieser add' apply von: 'strip_play_services.gradle'' (Ich mache es nach den verschiedenen Plugins.) Wenn du Proguard benutzt, füge die Zeile im gist zu deinem 'proguard- rules.txt' und du bist fertig! Jetzt wieder aufzubauen und zu genießen :) – Takhion

+0

@Takhion ist dies möglich, um die Klassen von Google Play Services Library-Projekt auszuschließen? weil ich Eclipse nicht Android Studio verwende. – Amarnath

14

Idealerweise sollten Sie ProGurad verwenden zu verwenden, schlägt jedoch können Sie diese beiden Schritte folgen:

Schritt 1 : Entfernen Sie nicht verwendete Klassen aus der JAR - Datei

Öffnen Sie die google-play-services.jar im Bibliotheksprojekt mit einem Zip-Datei-Manager wie Winrar oder 7zip. Sie finden viele Ordner wie maps, games, löschen Sie einfach diejenigen, die Sie nicht benötigen. Stellen Sie sicher, dass Sie common, dynamic, internal behalten.

Schritt 2: Entfernen Sie nicht genutzte Ressource aus res Ordner

Die meisten der Ressourcen in der Google-Play-services_lib \ res Ordner möglicherweise nicht von Nutzen sein, so dass Sie es entfernen können. Dazu gehören values-af, values-am, .... was Sie brauchen, ist Farbe, drawable, drawable-hdpi und values Ordner.

Aktualisieren und erstellen Sie die google-play-services_lib Projekt und Ihr Projekt. Deine apk-Größe sollte verringert werden.

+0

Vielen Dank Mann! Das hat mich vor dem [65k-Methodenproblem] gerettet (https://developer.android.com/tools/building/multidex.html)! – qefzec

+0

Danke danke danke! Ich habe mir mit der 65k-Methode die Haare ausgerissen. Das ist fantastisch. – Jamie

+0

können Sie mich wissen lassen, welchen Ordner ich löschen kann Ich brauche nur gcm Funktion Ich bin mir nicht sicher welche ich löschen kann ( –

0

Zielen Sie Android 2.3 oder nicht?

Wenn nicht, verwenden Sie die MultiDex Support Library.

Von hier: Google+.


MultiDex Support Library

So hat Ihre Anwendung zu groß geworden: Sie sind über die Dex Grenze. Vielleicht haben Sie einige der lächerlich nützlichen Bibliotheken genutzt, die etwas Gewicht verlieren könnten (Google Play Services, ich sehe Sie an). Sie mussten darauf zurückgreifen, die Funktionalität Ihrer App einzuschränken oder verrückte Hacks zu verwenden, um das Limit zu umgehen. Nicht mehr: Willkommen MultiDexApplication!

MultiDexApplication, Teil einer einfachen Android-Support-Multidex.jar in sdk\extras\android\support\multidex\library\libs, bietet Ihnen MultiDex-Unterstützung auf allen API 4+ Geräten (na ja, bis v21, wo Sie dies nativ bekommen), indem Ihre Anwendung MultiDexApplication erweitert oder MultiDex.install (context) im attachBaseContext Ihrer Anwendung aufruft. Das ist es. Ernst.

Hinweis: Sie sollten wirklich, wirklich Proguard, bevor Sie das Multidex Kaninchenloch gehen.

Link

4

In Android Studio Sie einzelne Bibliothek von Google verwenden können Service wie

compile 'com.google.android.gms:play-services:7.5.0' 

spielen mit diesen Zeilen:

compile 'com.google.android.gms:play-services-maps:7.5.0' 
compile 'com.google.android.gms:play-services-ads:7.5.0' 
compile 'com.google.android.gms:play-services-analytics:7.5.0' 
compile 'com.google.android.gms:play-services-location:7.5.0' 

komplette Liste ist hier https://developers.google.com/android/guides/setup verfügbar

Einige APIs haben keine separate Bibliothek; schließe sie ein, indem du die Basisbibliothek einbaust

Verwandte Themen