2016-04-08 32 views
1

Android'de hata ayıklayıcısını çalıştırmak istiyorum ancak sorunum hata ayıklama yapısındadır. Bunun nedeni, aptal 65K yöntem sınırıdır. Yöntemleri azaltmaya yardımcı olmak için proguard'ı açtım. Bu beni 43K yöntemlerine döndürüyor, ancak IDE'de IDE'deki tüm kesme noktaları kırmızı X'lere dönüştürebilme hatasıyla hataya dönüştürebildiğinden kod boyunca adım adım hata ayıklayamıyorum. Hata ayıklayıcısını kapatırsam kesme noktası normale döner. Bu işe yarayacak ya da sadece gözetlediğim yapı kürek koruyucusunda yapmam gereken bir şey var mı?Proguard On ile Android Studio'da Debuginder'ı çalıştırın

buildTypes { 
    debug { 
     debuggable true 
     minifyEnabled true 
     shrinkResources false 
     zipAlignEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
     signingConfig signingConfigs.debug 
    } 
    release { 
     minifyEnabled true 
     shrinkResources true 
     signingConfig signingConfigs.release 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-samsung.txt' 
    } 
} 
+0

herhangi kullanılmayan kütüphaneler var mı? Bağımlılıklarınız neler? Kütüphanelerinizin kullanılmayan kısımlarından bazılarını sorabilir misiniz? bedeninizi küçültmenize yardımcı olmak istiyorum! – ApolloSoftware

+0

Bir sürü üçüncü tarafın işe yaramaz şeylerle doluydu, şimdi olabildiğince çok indirdik, bir duvara karşıyız. – JPM

+0

aynı sorunu yaşıyorduk. Yöntemi 65K'nın üzerinde saydığımız suçlu google oyunuydu. Google oyun yapısının eski bir sürümünü kullanmak zorunda kaldık (daha az kabartı ile) ve bizi eşiğin altına indirdi. APK'nızı birkaç ayrı modüler bileşenlere ayırmanız gerekebilir. – ApolloSoftware

cevap

2

ProGuard yapılandırmanızın muhtemelen bazı cümleleri özlüyor.

-keepattributes SourceFile,LineNumberTable 

Bu kaynak dosyaları ve satır numarası tablonun (adından da anlaşılacağı gibi) tutmak adı edecektir: sanırım

bu gerekir. Aslında, bu madde ayrıca yayınlanmak için de kullanılmalıdır, çünkü bu dizgileri net bir şekilde onsuz yığınlar halinde deobfuscate edemezsiniz.

Ve ayıklama için bu ekstra maddesini olması iyi:

-keepattributes LocalVariableTable,LocalVariableTypeTable 

yerel değişken adları tutacak.

Alternatif olarak, debug bu maddeleri (yerine veya Önceki madde dışında) kullanarak düşünebilirsiniz:

-dontoptimize 
-dontobfuscate