2013-06-14 14 views
5

Kavanoz dosyalarımdaki ProGuard'ı kullanarak aramalarım class.getResource("")'a kırdı. Bunu ProGuard kılavuzunda -keepdirectories mypackage (manual link) belirtmeniz gerektiğini gördüm. Ancak, -keepdirectories seçeneğini belirledim ve çalışmıyor gibi görünüyor. ProGuard konfigürasyonumda bir sorun olduğunu düşünüyorum. Ben de this related question baktım, ama ben de çalışıyor -keeppackagenames almakta sorun yaşıyorum.GetResource ProGuard ile null sonucunu kullanalım null sonuç

Kodumda, aşağıdakine benzer bir şey var.

package com.example.mypackage; 
public class MyClass{ 
    public static void main(String [] args){ 
     //url is always returned as null 
     URL url = MyClass.class.getResource(""); 
     //do additional stuff including retrieving manifest file 
    } 
} 

ProGuard Yapılandırma

-injars ... 
-outjars ... 
-libraryjars ... 

-dontoptimize 
-keepattributes SourceFile,LineNumber,Table,LocalVariable*Table,*Annotation* 
-renamesourcefileattribute SourceFile 

-repackageclasses 
-overloadaggressively 

-keep public class com.example.mypackage.MyClass{ 
    public static void main(java.lang.String[]); 
} 
-keepdirectories com.example.mypackage,com.example.mypackage.MyClass 
-keeppackagenames com.example.mypackage,com.example.mypackage.MyClass 

cevap

3

ProGuard paketleri adlarında noktalar beklediğini ve dosya adları ve dizin adları eğik:

-keeppackagenames com.example.mypackage 
-keepdirectories com/example/mypackage 
+0

'/' keepdirectories' hile yaptı 'ekleme! Bunu doğru cevap olarak işaretledim. –

+0

Dikkat! Belirtilen yol bir eğik çizgi ile bitmeyebilir: https://sourceforge.net/p/proguard/bugs/521/ – Gili

0

Ben, bu tür aksak hissediyor ve ona ederken Ancak -keepdirectories

-keepdirectories **mypackage** 

için aşağıdaki modifikasyon ile çalışan almak başardı bulundu işler, orada daha iyi bir çözüm varmış gibi hissediyorum.

İlgili konular