我想要实现的是避免我的方法参数具有String paramString或int paramInt这样的名称。我正在尝试使用-obfuscationdictionary,但它不起作用(至少它没有做我认为它应该做的,这是使用我的字典单词而不是paramString等)
我有以下Proguard配置文件,但我没有使用我的字典单词列表。 (我检查它是通过重命名它找到的文件找到字典文件,并且它没有编译,说它找不到我的字典)。
public abstract class Employee {
int employeeID;
String firstName;
String lastName;
ArrayList<Paycheck>listOfPaychecks;
double hourlyRate;
double periodHours;
/**
* @param employeeID
* @param firstName
* @param lastName
* @param listOfPaychecks
* Parameterized Constructor
*/
public Employee (int employeeID, String firstName, String lastName,
ArrayList<Paycheck> listOfPaychecks){
this.employeeID = employeeID;
this.firstName = firstName;
this.lastName = lastName;
this.listOfPaychecks = listOfPaychecks;
}
public int getEmployeeID() {
return employeeID;
}
public void setEmployeeID(int employeeID){
this.employeeID = employeeID;
}
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public String getLastName(){
return lastName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public ArrayList<Paycheck> getListOfPaychecks(){
return listOfPaychecks;
}
public void setListOfPaychecks(ArrayList<Paycheck> listOfPaychecks){
this.listOfPaychecks = listOfPaychecks;
}
@Override
public String toString() {
StringBuffer employeeInfo=new StringBuffer();
employeeInfo.append("Employee ID: "+employeeID+" First Name: "+firstName+" Last Name: "+lastName+"\nPay Check Details: \n");
for (Paycheck paycheck : listOfPaychecks) {
employeeInfo.append(paycheck.toString());
}
return employeeInfo.toString();
}
}
答案 0 :(得分:1)
AFAIK,Proguard没有&#34;混淆&#34;参数名称与其他名称相同,它只是剥离它们(因为与字段和类名称不同,参数名称存储在可选的调试符号中)。 &#34;您在反编译器(paramInt
,arg0
等)中看到的参数名称&#34;只是由反编译器本身自动生成的名称。不支持将混淆字典应用于参数名称, - 您可以将它们完全剥离或保留它们(provided that your binaries had them in the first place)。
您可以尝试通过-keepattribute LocalVariableTable
保留原始参数名称,但除非您-keep
整个类,否则这可能不起作用, - Proguard对现代类文件中的局部变量的处理有点儿错误。如果你什么都不做,Proguard将默认删除它们。
答案 1 :(得分:1)
正如另一个答案已正确说明的那样,ProGuard不会将混淆字典用于方法参数。要么将它们删除,要么保留原始名称。
为了保留它们,您必须添加以下内容:
-keepparameternames