2013-06-14 8 views
5

jarファイルでProGuardを使用すると、私の呼び出しがclass.getResource("")に壊れています。 ProGuardのマニュアルでは-keepdirectories mypackagemanual link)を指定する必要があります。しかし、私は-keepdirectoriesオプションを指定しており、動作していないようです。私はProGuardの設定に何か問題があると思います。私もthis related questionを見てきましたが、私は-keeppackagenamesもうまく動作しません。ProGuardでgetResourceを使用すると結果がnullになる

私のコードには次のようなものがあります。

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の設定

-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 

答えて

3

ProGuardのは、パッケージ名にドットを期待して、ファイル名やディレクトリ名にスラッシュ:keepdirectories` `に`/`を追加

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

はトリックをしました!私はこれを正解とマークしました。 –

+0

注意!指定されたパスはスラッシュで終わることはできません:https://sourceforge.net/p/proguard/bugs/521/ – Gili

0

私はしかし、これは不格好なの並べ替えを感じ、そしてそれながら、それは-keepdirectories

-keepdirectories **mypackage** 

を次のように変更して作業を取得することができたことがわかりました私はそこにもっと良い解決策があるかのように感じます。

関連する問題