0
我一直在使用「UI form validation library for Android」庫來驗證我的用戶界面。而我也實現了一些自定義的驗證規則,例如:progaurd不保留註釋
public class CellRule extends AnnotationRule<Cell, String> {
protected CellRule(Cell cell) {
super(cell);
}
@Override
public boolean isValid(String text) {
if(text.isEmpty()) {
return false;
}
String cellNumber = StringUtils.toStandard(text);
Pattern cellPattern = Pattern.compile("^(0|\\+98)9(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}$");
Matcher cellMatcher = cellPattern.matcher(cellNumber);
return cellMatcher.matches();
}
}
@ValidateUsing(CellRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Cell {
int sequence() default -1;
int messageResId() default -1;
String message() default "Invalid Cell!";
}
,我用這個命令註冊它們:
Validator.registerAnnotation(Cell.class);
,並預期它一直工作。直到我試圖生成簽名apk(啓用縮小),現在它給了我一些錯誤...當我檢查了apk(使用反編譯)看起來progaurd沒有保留註釋(@interface Cell
)在apk中。
當我註釋掉註冊行都很好。