2016-08-05 35 views
5

SO üzerinde çok sayıda konu okudum ama yanıt alamadım. Burada birden fazla sorum var. Açıklatayım:ProGuard eşleme dosyası üretmiyor

  • ProGuard hakkında pek bir şey bilmiyorum ama benim bilgilerime göre, Android kodunu bir dereceye kadar gizliyor. Sorum şu: Bunu bir yerde etkinleştirmem gerekiyor mu? minifyEnabled, Gradle dosyanızda false olduğunu. Bu ProGuard'ı tamamen devre dışı bırakır mı?
  • Firebase'deki kilitlenmeyi ortadan kaldırmak ve yığın izini almak için, eşleme dosyasına ihtiyacım var. Onu hiç bir yerde bulamıyorum. Uygulamanın/yapı/çıkışlar klasöründe, sadece

Folder

Sonra yere yaklaşık proguard-rules.pro dosyayı okumak var. Sadece bazı yorumlar ve kod yoktu. Sonra bunu içine koydum: -printmapping mapping.txt. Daha sonra yine imzalı bir APK oluşturdu, yine de başarı yok. Neyi kaçırıyorum?

Düzenleme 1: Bazı adb terminal komutunu çalıştırmam gerekirse, lütfen adımları açıklayın. Daha önce hiç Terminal kullanmamıştım. Proguard etkinleştirmek için

cevap

7

eşleştirmeleri dosyası için çıkışlar klasöründe

  • bak. [Temiz değil Project mı yoksa gitmiş olacak] özel olarak true minifyEnabled seçeneğini ayarlamak gerekir.
    Bu, gizlemeyi mümkün kılar. Bunu yaparak, 'proguard-rules.pro' dosyanızda tanımladığınız gizleme kurallarını da uygular.

    buildTypes { 
        release { 
         minifyEnabled false 
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        } 
    } 
    

    Sen eşleştirmesini yazdırabilir ve tohumu ilgili komutları

    -printseeds obfuscation/seeds.txt 
    

    ve

    uygulayarak (şifreli kod anlama/hem tam çözmesi gerektiğini unutmayın) kullanılan
    -printmapping obfuscation/mapping.txt 
    

    Temel bir proguard dosyası örneği:

    -optimizationpasses 5 
    -dontpreverify 
    -repackageclasses '' 
    -allowaccessmodification 
    -optimizations !code/simplification/arithmetic 
    -keepattributes *Annotation* 
    
    -verbose 
    
    -dump obfuscation/class_files.txt 
    -printseeds obfuscation/seeds.txt 
    -printusage obfuscation/unused.txt 
    -printmapping obfuscation/mapping.txt 
    

    Selamlar,

  • +0

    Detay için teşekkürler. Proguard'ı etkinleştirdikten ve imzalı apk oluşturduktan sonra bir hata alıyorum. hata ayıklama APK başarılı bir şekilde oluşturup imzalamadı. İşte not mesajı: https://db.tt/Xhm8C10T –

    +1

    Biraz '' java.awt.datatransfer.DataFlavor '' başvurulan başvurulan sınıfı hakkında endişeleniyorum. Bu kodu sakınmaktan uzak tutman gerekiyor gibi görünüyor. Benim düşünceme göre, retrofit, okttp, vb. Gibi kütüphaneleri gizlememelisiniz. Bunun sebebi, bunun bir anlamı yoktur. Kütüphane herkese açık olsa da, insanları gizlemesine rağmen yine de kendi web sitelerinden alabilirsiniz. Yalnızca mülkünüzü gizlemeye odaklanmalısınız (örneğin kendi kodunuz gibi) –

    +0

    Yeni bir iş parçacığı mı yapmalıyım? –

    1
    1. Sen true minifyEnabled ayarlamanız gerekir.
    2. Bazı kitaplıklar için, Proguard tarafından gizlenmemeleri için proguard-rules.pro içine bazı çizgiler yazmanız gerekir. Firebase için eklemek ne olduğunu öğrenmek için bu sayfadaki "Yapılandırma ProGuard" bölümünü Bkz: https://firebase.google.com/docs/database/android/start/
    +0

    Ben ProGuard sağlayan ve imzalanmış apk oluşturduktan sonra bir hata alıyorum.hata ayıklama APK başarılı bir şekilde oluşturup imzalamadı. İşte not mesajı: https://db.tt/Xhm8C10T –

    0
    1. Seti true minifyEnabled.
    2. Oluştur oluşturma APK'sı. senin gradle dosyasında
    +0

    Proguard'ı etkinleştirdikten ve imzalı apk oluşturduktan sonra bir hata alıyorum. hata ayıklama APK başarılı bir şekilde oluşturup imzalamadı. İşte not mesajı: https://db.tt/Xhm8C10T –

    +0

    - Prontile kurallarında "-dontwarn com.android.volley. **" gibi projenizde kullandığınız tüm kütüphane paketi ile -dontwarn flag kullanın –

    +0

    Ekleme - görmezden gelme işe yaradı! Uygulamamın işleyişinde sorun olmamalı, doğru mu? –

    2

    deneyin ayarını kontrol etmek -> InstantRun ... o :) devre dışı bırakılmalıdır

    +0

    Bu benim için çalıştı! –