Your problem with ProGuard. When you deploy the application in release mode, ProGuard starts and reduces all your methods / classes / variables / etc. This means that if once the method was called " doSomething() ", it will be renamed to something like " a() ". This is good because when it happens throughout your code, it makes your code smaller and faster.
This may be a problem with working with the NDK, because the way the native library communicates with Java methods is a reflection that requires naming convention (methods found by text name. If the name changes, the method cannot be found).
You can solve this problem by editing the ProGuard file to exclude certain classes.
For example, in your case, I would add the following line to the ProGuard file:
-keep class com.esri.core.runtime.LicenseImpl { *; }
Actually, you can make this rule even more specific in order to exclude only the problematic method:
-keep class com.esri.core.runtime.LicenseImpl { public void nativeIsClientIdValid(...); }
ProGuard is quite effective when it comes to which parts of the code have been minified or not, so I suggest reading on it.
Perhaps there are other classes that should be excluded from ProGuard in the same way, so if you continue to get similar errors after adding this fix, just add more ProGuard rules, depending on which methods / classes are not found.
Edit:
According to the new error you are getting, it seems that proguard is a refactoring of annotations, and this may be the reason for your new error. Add a check box to exclude annotations:
-keepattributes *Annotation*
Edit 2:
According to this blog post about porting projects to Android studio on the Esri website , it looks like they have not yet found a way to overcome ProGuard on their own, as they recommend setting enableMinify to false . This may mean that the Esri package simply does not work to minimize at this time or that they did not spend time figuring out how to solve the problem.