Di mana Android Studio menyimpan file pemetaan ProGuard?


182

Di Android Studio, di mana file pemetaan ProGuard dihasilkan setelah kompilasi APK yang ditandatangani?

Saya tidak yakin apakah itu tidak berfungsi atau jika saya hanya lupa path file, dan pencarian Google / Stack Overflow wajib saya tidak menjawab ini


1
dijelaskan di sini secara resmi firebase.google.com/docs/crash/…
Jayakrishnan PM

3
@JayakrishnanPM senang melihat Google berhasil melakukannya 3 tahun kemudian.
CQM

Jawaban:


272

Itu harus terletak di build/outputs/proguard/release/mapping.txtdalam direktori modul aplikasi Anda.

Dalam versi terbaru ProGuard dan Android Studio, file tersebut berada di build/outputs/mapping/release/mapping.txt.


5
Informasi lebih lanjut tentang file dan jalur yang dihasilkan: developer.android.com/studio/build/shrink-code.html
Helton Isac

Jika Jalankan Instan Anda diaktifkan, Anda mungkin tidak dapat melihat file pemetaan. Nonaktifkan Instant Run dan bangun kembali.
Faizan Mubasher

1
Setelah pembaruan ke Plugin Gradle 6.2.2 / Gradle 3.6.1 jalur diubah untuk kami. /app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt /app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txtadalah jalan baru.
Carsten Hagemann

75

Bagi saya mereka berada di 'build/outputs/mapping/release'


16
'build / outputs / mapping / release / mapping.txt'
aleb

1
Ya itu sempurna untuk android studio 2.3.2
Subho

1
app / build / outputs / mapping / release / mapping.txt bc ada folder build terpisah yang tidak mengandung file pemetaan ...
NukeouT

39

Saya menemukan ini lebih bersih untuk mengkonfigurasi proguard untuk menulis file mapping.txt ke lokasi di luar build/pohon direktori, sehingga bisa lebih mudah diperiksa ke kontrol versi.

Untuk mencapai ini, letakkan ini di proguard-rules.profile Anda :

-printmapping mapping.txt

Ini akan (kemungkinan besar) menempatkannya di direktori yang sama dengan proguard-rules.profile Anda . Pada akhirnya, Anda mungkin ingin menulisnya ke direktori yang sama dengan file APK Anda dan dengan nama yang setara (yang mungkin termasuk rasa, tipe build dll).

Catatan: dalam pengalaman saya, ini tidak ditolak oleh file templat proguard (yang disarankan oleh komentator untuk jawaban lain di sini).

UPDATE: Jika Anda memiliki beberapa rasa produk, maka ini adalah solusi yang jauh lebih baik: https://stackoverflow.com/a/31116608/444761


1
Ini lebih baik daripada solusi saya, karena seperti yang Anda katakan, Anda dapat meletakkannya di bawah kontrol versi.
Clive Jefferies

mengapa Anda ingin versi mengontrol yang ini? Anda memerlukannya untuk setiap APK yang Anda lepaskan secara terpisah karena ini bergantung pada bangunan. karena Anda harus mengunggah / checkin apk seperti itu secara terpisah dari sumber sebenarnya tidak perlu memeriksanya di sumber VCS !?
Denny1989

@ Denny1989 tidak yakin apa yang Anda maksud. Saya membangun APK dan menyimpannya di luar kontrol versi. Saya harus menyimpan file pemetaan di suatu tempat. Saya bisa menyimpannya di samping APK, tetapi saya merasa lebih bersih untuk mengontrol versi. Namun, saya hanya punya satu rilis APK per proyek jadi YMMV.
Markus

36

Saya menemukan bahwa itu tidak dihasilkan, jadi saya menambahkan ini ke file aturan

-printmapping build/outputs/mapping/release/mapping.txt

1
Saya menemukan bahwa printmapping ditolak oleh file template proguard yang saya gunakan!
Bocah

1
ini berhasil dan menghasilkan semua file keluaran proguard untuk saya.
j2emanue

16

Sudah cukup terlambat untuk menjawab pertanyaan ini tetapi untuk berjaga-jaga jika seseorang membutuhkan jawaban saya.

Lokasi file Pemetaan untuk menghapus:

ProGuard menyimpan file di app app / build / outputs / mapping / FLAVOR / release / mapping.txt

Umumnya dalam mode debug Anda tidak perlu file pemetaan karena kebingungan umumnya dinonaktifkan. Jika bukan itu masalahnya maka pastikan dalam file build.gradle Anda memiliki kode di bawah ini untuk varian debug.

debug {
    minifyEnabled false
    debuggable true
}

Beberapa Gotcha:

file mapping.txt akan ditimpa setiap kali Anda membuat rilis dengan ProGuard, jadi pertama-tama buat cadangan file itu sebelum membuat rilis baru. Ini akan membantu menghilangkan jejak tumpukan dari versi aplikasi Anda yang lebih lama.

Selain itu ada dua cara untuk mengaburkan kode Anda:

1. Unggah file mapping.txt Anda ke Google play Console:

Saat menerbitkan aplikasi Anda di Google Play, Anda dapat mengunggah file mapping.txt untuk setiap versi APK Anda. Kemudian Google Play akan menghilangkan jejak tumpukan yang masuk dari masalah yang dilaporkan pengguna sehingga Anda dapat memeriksanya di Google Play Console.

2. Gunakan alat sdk lokal retrace.sh/retrace.bat:

Beberapa kali Anda ingin menjalankan versi rilis aplikasi Anda (dengan mengubah varian build untuk melepaskan dan menjalankannya) untuk mengecek dan memperbaiki kesalahan sehingga tidak terjadi dalam produksi (ketika dirilis ke play-store).

Untuk mengonversi jejak tumpukan yang dikaburkan menjadi yang dapat dibaca sendiri, gunakan skrip retrace ( retrace.bat di Windows; retrace.sh di Mac / Linux ).

Itu terletak di <sdk-root>/tools/proguard/bin/direktori.

<sdk-root> adalah tempat di mana semua perpustakaan dan sdks android Anda dipasang.

Script mengambil file mapping.txt dan jejak stack Anda, menghasilkan jejak stack baru yang dapat dibaca.

Perintah Sintaks:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

Sebagai contoh:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

Saya lebih suka versi lokal yang membingungkan karena cukup praktis untuk memeriksa ulang kesalahan produksi.

Saya harap ini membantu.


12

Saya menggunakan versi Android Studio 2.2.2 . Bagi saya itu terletak di lokasi berikut:

Untuk debug: \app\build\outputs\mapping\debug\mapping.txt

Untuk rilis: \app\build\outputs\mapping\release\mapping.txt


11

masukkan deskripsi gambar di sini

Ini ada di dalam gambar - Anda akan menemukannya di folder pemetaan:


2

Karena saya bodoh dan tersesat bahkan ketika seseorang memberi tahu saya di mana file itu:

cd StudioProjects/fooProject
find . -name "mapping.txt" | xargs less
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.