Was ist ein deobfuscation file?

  • Antworten:1
Petra Ritter
  • Forum-Beiträge: 86

02.11.2024, 13:19:22 via Website

Guten Tag,

Ich habe gerade eine neue Version meiner App in den Google Play Store in den internen Test hochgeladen und habe die folgende Warnung erhalten:

There is no deobfuscation file associated with this App Bundle. If you use obfuscated code (R8/proguard), uploading a deobfuscation file will make crashes and ANRs easier to analyse and debug. Using R8/proguard can help reduce app size. Learn more

Habe jetzt die App trotz der Wahrung hoch geladen. Möchte aber trotzdem wissen. was es mit dem file auf sich hat.

Habe die Seite gefunden https://developer.android.com/build/shrink-code?hl=de#groovy

Verstehe aber nicht alles, was da steht.

Ich hoffe nur dass, R8 meinen Code nicht allzu sehr optimiert und die App hinterher nicht mehr funktioniert wie sie soll. Könnte nämlich schon sein, dass mein Code noch Luft gegen oben hat, was die Optimierung angeht.

Antworten
koje71
  • Forum-Beiträge: 72

18.11.2024, 20:35:40 via Website

Wenn du eine App veröffentlichst, dann wird diese zu Maschinencode compiliert und als Paket an Google geliefert. Mit einigen Tricks lässt sich aber aus diesem Paket die Programmstruktur ableiten, sogar Java Code zurück erzeugen. Z.B. sind Variablen und Klassennamen im Original enthalten. Beim Bauen der App kannst du einstellen, ob eine Obfuscation durchgeführt werden soll. Dabei werden Variablen und Klassennamen durch sinnlose Zeichenketten ersetzt. Die Ersetzungstabelle (deobfuscation file) wird dabei aufgehoben. Die App funktioniert in den meisten Fällen auch noch, ist zusätzlich auch kleiner, aber eine Analyse der APK Datei oder des Bundles fällt wesentlich schwerer.

Wenn die App mal irgendwo abstürzt, dann liefert Google einen Stacktrace. Dieser ist aber mit einer obfuskierten Programmversion nahezu sinnlos. Wenn du aber die Übersetzungsdatei mit an Google liefert, dann kann der Stacktrace zurückübersetzt werden und ist im Fehlerfalle viel aussagekräftiger.

Ob deine App obfuskiert ist, erkennst du in der build.gradle Datei. Wenn dort isMinifyEnabled auf true steht, dann wird obfuskiert.

Nur dann brauchst du überhaupt auf die Google Meldung zu achten. Und unternehmen musst du nur etwas, wenn du die Stacktraces zur Fehleranalyse benötigst.

— geändert am 18.11.2024, 20:40:47

Antworten