Proguard config für Facebook sdk. Entferne alles außer Analytics

8

Ich möchte die facebook sdk nur für die Analyse verwenden, gibt es eine optimierte Progard-Konfiguration, mit der ich den Rest entfernen könnte?

    
dmarin 17.07.2017, 08:16
quelle

4 Antworten

0

Meine Frage war falsch, es gibt keine Möglichkeit, den Code in proguard zu entfernen, wahrscheinlich kann es mit Ausschlüssen in Gradle gespielt werden, aber ich denke nicht, dass es möglich ist, nur mit proguard

zu arbeiten

Auf jeden Fall hat Facebook sein sdk endlich modularisiert, und für Leute wie mich, die nur auf Analytik setzen, ist facebook-core die einzige, die wir importieren müssen

    
dmarin 01.08.2017, 10:05
quelle
1

Wenn es sich um eine riesige Größe handelt, geht es hauptsächlich um die Ressourcen und nicht darum, Java-Code selbst zu minimieren. So könnten Sie tatsächlich ein paar der unten genannten Dinge ausprobieren.

  1. Proguard arbeitet mit dem Java-Code. Leider funktioniert es nicht im Ressourcenordner. Wenn ein Bild my_image in res / drawable nicht verwendet wird, entfernt Proguard daher nur die Referenz in der R-Klasse, behält aber das zugehörige Bild bei.
  2. Lint ist ein statischer Code-Analysator, mit dem Sie alle nicht verwendeten Ressourcen mit einem einfachen Aufruf von ./gradlew lint erkennen können. Es generiert einen HTML-Bericht und gibt Ihnen die erschöpfende Liste der Ressourcen, die im Abschnitt "UnusedResources: Unused resources" nicht verwendet werden. Es ist sicher, diese Ressourcen zu entfernen, solange Sie nicht durch Reflektion in Ihrem Code darauf zugreifen.

Lint kann Ihnen jedoch sagen, wo nicht verwendete Ressourcen sind, aber mit fb sdk wird es schwer sein, die Ressourcen zu löschen, da sie aus dem maven-Repository kommen.

Minimierung der Ressourcenkonfiguration (build.gradle) Zum Beispiel bietet Fb sdk Unterstützung für alle Sprachen, die Sie nicht brauchen, oder alle Ordner Bilder wie mdpi, die für Sie möglicherweise nicht nützlich sind.

%Vor%

Wenn das alles nicht funktioniert, bedeutet das, dass entweder nativer Code Ihre APK aufbläht, wo die binäre Schnittstellenspaltung der Anwendung dazu beitragen könnte, Ihre apk-Größe zu reduzieren.

ABI Split: -

%Vor%

Ich denke, hier könnte etwas getan werden, während ich facebook sdk grdle file öffne ... es hat nur wenige transitive Abhängigkeiten, was redundant ist und mit Ihrer Support-Version kollidieren könnte, so dass Sie dasselbe in Ihre Dateien importieren könnten

%Vor%

Es könnte aus dem finalen Fat-Jar entfernt werden, da Sie möglicherweise bereits die Support-Abhängigkeiten in Ihrem Projekt verwenden, die zu verschieden oder widersprüchlich sind. So könnten Sie idealerweise transitive Abhängigkeiten basierend auf Ihren Anforderungen ausschließen wie etwa

%Vor%     
Anukalp Katyal 01.08.2017 01:20
quelle
-1

Die ProGuard-Konfiguration, die im Facebook-SDK enthalten ist wurde aktualisiert und entfernt alle Klassen, die nicht von Ihrer App verwendet werden (z. B. alles nicht in Analytics).

... außer für irgendwas Serializable , welches nach Facebook nicht sicher zu entfernen ist ...

Es sieht jetzt sehr ähnlich wie die älteren Antworten hier aus:

%Vor%

(von 20. Mai 2016 )

Was bedeutet, dass wir nicht mehr unsere eigenen ProGuard Einstellungen für Facebook brauchen . Gradle verwendet automatisch die vom SDK bereitgestellten Regeln.

Natürlich erfordert dies immer noch, dass Ihr build.gradle für die Ausführung von ProGuard konfiguriert ist:

%Vor%     
Richard Le Mesurier 25.07.2017 16:24
quelle
-1
%Vor%

Ich benutze diese 2 Zeilen und arbeite alles gut

    
Rehan ch 01.08.2017 05:46
quelle

Tags und Links