Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix warning 'can't find referenced class' in Android Eclipse ProGuard Rule?

I am using Eclipse. In my Android code, I have used ProGuard. But while exporting the APK, I encountered the following warnings:

Proguard returned with error code 1. See console
Warning: okio.DeflaterSink: can't find referenced class     org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
       You should check if you need to specify additional program jars.
Warning: there were 14 unresolved references to classes or interfaces.
          You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)

What's wrong?

like image 885
user3068659 Avatar asked Apr 20 '16 07:04

user3068659


2 Answers

You can Solve that by modifying the 'progaurd-rules.pro' which seems that you are using Progaurd for Shrinking your Code.

You must use -dontwarn But be careful before adding this to proguard file as there will not be errors at testing because Proguard had already delete some classes not being used

for case of OKiO add these lines

-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

For any other library you can see this link for further proguard operations https://github.com/krschultz/android-proguard-snippets

like image 195
Mohamed Fadel Buffon Avatar answered Nov 01 '22 17:11

Mohamed Fadel Buffon


Probably its better to add Okio rules from android-proguard-snippets:

# Okio
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**
like image 41
georgij Avatar answered Nov 01 '22 18:11

georgij