phonelib bug regarding cant find proto

Do you make use of PhoneNumberUtils in your android project?

If so, have you ever encountered this exception before?

java.lang.RuntimeException: cannot load/parse metadata: /com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY at com.google.a.a.d.a(PhoneNumberUtil.java:619)

If yes, chances are you are probably using [proguard][progaurd] to do the obfuscation of code. However, as this points out, proguard automatically also obfuscates the library files. However, the PhoneNumberUtils has a hardcoded path to the proto files. Therefore, one cannot rely on obfuscating the library’s code.

To resolve you must add the following lines in your proguard configuration file:

-keep class com.google.i18n.phonenumbers.** { *; }

This problem occurs in Android version Honeycomb and below it, as versions after Honeycomb have their own phonenumber util included which has a namespace of com.google.android.i18n.phonenumbers. If you are supporting version below honeycomb this can be an overlooked disaster.