We have a 3rd party library which class and method name contains weird Unicode characters. We believe this is caused by code obfuscation.


When we try to build an Android project with Gradle, it fails.

(1) At first, we use the default stable version at this time - Gradle plugin v2.3.2 & Gradle v3.3. We get the following error in a release build. The debug build is OK.

Error:Execution failed for task ':app:packageRelease'.
> java.io.IOException: Failed to read zip file '/path/to/project/app/build/intermediates/transforms/proguard/release/jars/3/1f/main.jar'.

(2) Then we tried to upgrade to latest Gradle plugin v2.4 alpha7 & Gradle v3.5. We get a different error in debug build. The release build is OK.

Error:Error converting bytecode to dex:
Cause: class name (com/some/sdk/a/ՙ) does not match path (com/some/sdk/a/��.class)

It seems like the version changed something, but has not fully fix this issue.

(3) Finally, we revert Gradle plugin to a much older version - v2.2.3 + Gradle v3.3. We still get a warning message, but both debug and release build is successful.

Data descriptor verification failed for entry com/some/sdk/e/ᐨ.class
Data descriptor verification failed for entry com/some/sdk/e/ﹳ.class
Data descriptor verification failed for entry com/some/sdk/e/゙.class
Data descriptor verification failed for entry com/some/sdk/e/ʹ.class
Data descriptor verification failed for entry com/some/sdk/e/ՙ.class
Data descriptor verification failed for entry com/some/sdk/e/י.class
Data descriptor verification failed for entry com/some/sdk/e/ٴ.class

It seems like for now, reverting to v2.2.3 is the only choice for this particular issue.

Reference: https://issuetracker.google.com/issues/37117630