在我的jar文件上使用ProGuard打破了我的电话class.getResource("").我已经看到在ProGuard手册中你需要指定-keepdirectories mypackage(手动链接).但是,我已经指定了该-keepdirectories选项,它似乎没有起作用.我认为我的ProGuard配置有问题.我也看过这个相关的问题,但是我也无法-keeppackagenames正常工作.
在我的代码中,我有类似于以下内容.
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
}
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
ProGuard 需要包名中的点,文件名和目录名中的斜线:
-keeppackagenames com.example.mypackage
-keepdirectories com/example/mypackage
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1133 次 |
| 最近记录: |