android toolbar - Proguard garantisce di fornire la stessa mappatura se nessuna fonte è cambiata?



title studio (4)

Nel caso, se lo farò

  • costruire un progetto
  • ripulisci tutti i binari
  • costruiscilo di nuovo (nessuna fonte / risorse e così via è cambiata).

Proguard garantisce di fornire lo stesso file mapping.txt?


Answers

Se si desidera una garanzia, è necessario utilizzare il file di mapping come input per il processo di offuscamento. Ma poi devi attentamente controllare tutti gli avvisi relativi ai conflitti relativi a quel file di mappatura. Se la ignori, potresti ottenere degli errori impercettibili, quando lavori con la riflessione.


Potrebbe effettivamente accadere, ma non credo che Proguard lo garantisca.

Ho trovato questo nella documentazione di Proguard che ti consentirà di riutilizzare il tuo mapping.txt per evitare modifiche ai mapping

-applymapping nomefile

Specifica di riutilizzare la mappatura del nome dato che è stata stampata in una precedente sessione di offuscamento di ProGuard. Le classi e i membri della classe elencati nel file di mapping ricevono i nomi specificati insieme a loro. Le classi e i membri della classe che non sono menzionati ricevono nuovi nomi. La mappatura può riferirsi a classi di input e classi di libreria. Questa opzione può essere utile per l'offuscamento incrementale, ovvero l'elaborazione di componenti aggiuntivi o piccole patch su un pezzo di codice esistente. Se la struttura del codice cambia radicalmente, ProGuard può stampare avvisi che l'applicazione di una mappatura sta causando conflitti. Potresti essere in grado di ridurre questo rischio specificando l'opzione -usoqualifica nomimembrana in entrambe le esecuzioni di offuscamento. È consentito solo un singolo file di mappatura. Applicabile solo in caso di offuscamento.


ProGuard è deterministico: per lo stesso input, genererà lo stesso output.

Esiste tuttavia una sottigliezza: se il sistema operativo elenca i file di input in una directory (in particolare i file di classe che non si trovano all'interno di un archivio) in un ordine diverso, possono essere elaborati in un ordine diverso e l'output può essere diverso.


Questo problema viene sollevato perché ora la versione SDK di compilazione deve corrispondere alla versione principale della libreria di supporto Android.

Nel mio caso ho la versione 23 della Android Support Library , quindi ho dovuto compilare la Android SDK version 23 e ho dovuto modificarla nel mio file build.gradle :

Bene, alcuni di voi dovranno installare l'SDK, Android 6.0 (API 23)

e non dimenticare di sincronizzare il progetto con i file gradle





android proguard