Quando si offusca con ProGuard, -keepattributes SourceFile, LineNumberTable rende l’apk risultante più facile da decodificare?

Mi trovo ad avere bisogno di maggiori dettagli nelle mie tracce di stack segnalate, ma sono preoccupato che includendo i dati extra (usando -keepattributes SourceFile, LineNumberTable) sto rendendo la mia app ancora più semplice da decodificare. È questo il caso, e se sì, di quanto?

Manuale di ProGuard> Esempi> Produzione di utili tracce di stack offuscate

L’attributo SourceFile è obbligatorio, perché altrimenti la macchina virtuale Java di Oracle / Sun non include i numeri di riga nelle tracce dello stack, che è ciò che si vuole veramente (e che è piuttosto innocuo da solo). Non ho controllato se questo è vero per la macchina virtuale Dalvik di Android.

Per quanto riguarda una soluzione, ProGuard può mantenere l’attributo SourceFile ma sostituirlo con una stringa senza senso, ad es

-renamesourcefileattribute SourceFile 

Il valore della stringa non è importante per l’interpretazione delle tracce dello stack. Scegliere una stringa come “SourceFile” evita di aumentare le dimensioni del file di class, perché questa stringa è già presente per definizione.

Non sono esattamente sicuro di cosa succede ma dato che il nome del file sorgente contiene il nome effettivo della class, qualcuno potrebbe usarlo per mappare i nomi delle classi oscurate in nomi di classi reali. Dato che l’obbrobrio già mette tutto in ordine perché mantenere il file sorgente a tutti? Tutto dovrebbe funzionare e continuerà a funzionare, i dettagli di debug non sono richiesti dal runtime, quindi non ha senso mantenerli. Più rimuovi il migliore dati i tuoi obiettivi.