I have been doing a lot of work with the android build system and I ran into a situation that proguard was removing required classes causing a NoClassDefFoundError. I could tell the class was not being found however it took me a while to figure out that proguard was messing up the classes that were build with my code.
I finally found that I could prevent proguard from running by adding LOCAL_PROGUARD_ENABLED := disabled
to the Android.mk file.
I was only able to do this because I happened to chance accross someone elses Android.mk file that did the same.
I have not been able to find any documentation for the following
LOCAL_PROGUARD_FLAGS
LOCAL_PROGUARD_ENABLED
LOCAL_PROGUARD_FLAG_FILES
As best I can tell the typical usage of LOCAL_PROGUARD_FLAGS
is to identify the location of the proguard configuration file used as follows:
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
Problem is I cannot figure out how it differs from the LOCAL_PROGUARD_FLAG_FILES
used as follows:
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
The LOCAL_PROGUARD_ENABLED
can be used to disable proguard however other than the disabled
option I don't know what else can be used with this option.
LOCAL_PROGUARD_ENABLED := disabled
Does anyone know where I can find documentation (official or unofficial) for these build options? Google does not seem to return anything useful for my searches.
I searched for that information also and stumbled upon this patch:
Now the meaning of the LOCAL_PROGUARD_ENABLED options: * full: Use the build system's default configurations: with shrink but no obfuscation or optimization, global proguard flags in build/core/proguard.flags are applied. * custom: The same as "full" except no aapt-generated resource-related proguard flags. * nosystem: Don't use any build system's default configurations; but aapt-generated proguard flags are still applied. You are responsible for any other flags. * disabled: Disable proguard. * obfuscation: The same as "full" but with obfuscation enabled. * optimization: The same as "full" but with optimization enabled. * no value (the default): The build system chooses the proper value: "full" if it's an app; "disabled" if it's a library.
Here is the link: https://android.googlesource.com/platform/build/+/7311a34%5E!/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With