Android Studio'da, imzalı bir APK derlendikten sonra ProGuard eşleme dosyaları nerede üretiliyor?
Çalışıp çalışmadığından veya dosya yolunu yeni unuttuğumdan emin değilim ve zorunlu Google / Stack Overflow aramam buna cevap vermedi
Android Studio'da, imzalı bir APK derlendikten sonra ProGuard eşleme dosyaları nerede üretiliyor?
Çalışıp çalışmadığından veya dosya yolunu yeni unuttuğumdan emin değilim ve zorunlu Google / Stack Overflow aramam buna cevap vermedi
Yanıtlar:
build/outputs/proguard/release/mapping.txt
Uygulama modülünüzün dizininde bulunmalıdır .
ProGuard ve Android Studio son sürümünde, dosya bulunmaktadır build/outputs/mapping/release/mapping.txt
.
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
yeni yollar.
Benim için 'build/outputs/mapping/release'
Mapping.txt dosyasını dışında bir konuma yazmak için korumayı yapılandırmak daha temiz buldum build/
dizin ağacının , böylece sürüm kontrolüne daha rahat bir şekilde kontrol edilebilirdi.
Bunu başarmak için bunu proguard-rules.pro
dosyanıza koyun :
-printmapping mapping.txt
Bu, büyük olasılıkla proguard-rules.pro
dosyanızla aynı dizine yerleştirir . Sonuçta, muhtemelen APK dosyanızla aynı dizine ve eşdeğer bir adla (lezzet, yapı türü vb. İçerebilir) yazmak istersiniz.
Not: Tecrübelerime göre bu bir değil (başka bir yorumcu tarafından önerildi proguard şablon dosyası tarafından reddedildi cevap burada).
GÜNCELLEME: Birden fazla ürün çeşniniz varsa, bu çok daha iyi bir çözümdür: https://stackoverflow.com/a/31116608/444761
Bu soruya cevap vermek için çok geç ama birisinin cevabım olması gerekiyorsa.
Deobfuscate ile eşleme dosyasının konumu:
ProGuard dosyayı uygulama uygulamasına / build / outputs / mapping / FLAVOR / release / mapping.txt dosyasına kaydeder
Genellikle hata ayıklama modunda eşleme dosyasına ihtiyacınız yoktur, çünkü genellikle gizleme devre dışıdır. Bu durumda, build.gradle dosyasında hata ayıklama varyantı için kodun altında olduğundan emin olun.
debug {
minifyEnabled false
debuggable true
}
Bazı Gotcha'lar:
ProGuard ile her sürüm oluşturduğunuzda mapping.txt dosyasının üzerine yazılır, bu nedenle yeni bir sürüm oluşturmadan önce bu dosyanın yedeğini alın. Uygulamanızın eski bir sürümünden gizlenmiş yığın izlemesine yardımcı olacaktır.
Bunun dışında kodunuzu gizlemenin iki yolu vardır:
1. mapping.txt dosyanızı Google Play Konsoluna yükleyin:
Uygulamanızı Google Play'de yayınlarken, APK'nızın her sürümü için mapping.txt dosyasını yükleyebilirsiniz. Ardından Google Play, kullanıcı tarafından bildirilen sorunlardan gelen yığın izlerini bozar, böylece bunları Google Play Konsolunda inceleyebilirsiniz.
2. Yerel sdk aracını kullanın retrace.sh/retrace.bat:
Bazı zamanlar, üretimde gerçekleşmemesi için (oyun deposuna bırakıldığında) hataları kontrol etmek ve düzeltmek için uygulamanızın yayın sürümünü (yayınlamak için yapı varyantını değiştirerek ve yayınlayarak) çalıştırmak istersiniz.
Gizlenmiş bir yığın izini kendiniz okunabilir olana dönüştürmek için, retrace komut dosyasını kullanın ( Windows'ta retrace.bat; Mac / Linux'ta retrace.sh ).
Dizinde bulunur <sdk-root>/tools/proguard/bin/
.
<sdk-root>
tüm android kütüphanelerinizin ve SDD'lerinizin kurulduğu yerdir.
Komut dosyası mapping.txt dosyasını ve yığın izlemenizi alarak yeni, okunabilir bir yığın izlemesi oluşturur.
Komut Sözdizimi:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
Örneğin:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
Üretim hatalarını önceden kontrol etmek için oldukça kullanışlı olduğu için yerel gizleme sürümünü tercih ediyorum.
Umut ediyorum bu yardım eder.
Android Studio 2.2.2 sürümünü kullanıyorum . Benim için şu konumlarda bulunuyor:
Hata ayıklama için:
\app\build\outputs\mapping\debug\mapping.txt
Serbest bırakmak için:
\app\build\outputs\mapping\release\mapping.txt