最近先前的案子要發佈到android market上,臨時說禮拜五前要上,於是昨天花了一天弄那包LVL,下半前終於搞定。本以為今天只要再做個混淆就可以release了,沒想到ProGuard又耗了我一天。
終究原因如下。在google所release的market licensing的那包library裡面有用到enum這個東西。由於先前聽說在android上使用enum會有某些奇怪的問題,所以我們自己寫的code一律都是使用static final int來做。
沒想到的是,就在這包android的ref design裡面竟然有用到enum。混淆之後enum的value/valueof被混淆過,於是就不能用了。
在ProGuard官方網站裡面有提到這點,詳細請參考這邊。
具體的作法就是把
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
這段加到ant build的xml中ProGuard那段裡面即可。
0 Comments:
Post a Comment