2015-09-03 10 views
0

Это история: мне нужно настроить Proguard для библиотеки Android, которая содержит файл .jar с библиотекой JMDNS. Я знаю, что код работает отлично.Проблема Proguard и JMDNS на Android

Когда я включаю proward, и попытаться построить библиотеку, следующие ошибки, где напечатаны на консоли

Warning:javax.jmdns.impl.DNSCache: can't find referenced method 'java.util.concurrent.ConcurrentHashMap$KeySetView keySet()' in program class javax.jmdns.impl.DNSCache 
Warning:javax.jmdns.impl.DNSCache: can't find referenced class java.util.concurrent.ConcurrentHashMap$KeySetView 
Warning:there were 2 unresolved references to classes or interfaces. 
     You may need to add missing library jars or update their versions. 
     If your code works fine without the missing classes, you can suppress 
     the warnings with '-dontwarn' options. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) 
Warning:there were 1 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile the code. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 

Чтение немного, я узнал, что тег -dontwarn может быть использован, чтобы игнорировать этот тип предупреждений , После того, как применить его, консоль показывает, что это предупреждение

Warning:javax.jmdns.impl.DNSCache: can't find referenced method 'java.util.concurrent.ConcurrentHashMap$KeySetView keySet()' in program class javax.jmdns.impl.DNSCache 
Warning:there were 1 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile the code. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 

Есть ли способ, чтобы избавиться от этого сообщения, поэтому процесс компиляции может продолжаться? Я попытался добавить еще -dontwarn с отказоустойчивым методом и даже тегом -ignorewarnings без каких-либо успехов.

Кстати, мой proguard-rules.pro:

-keep class com.google.common.io.Resources { 
    public static <methods>; 
} 
-keep class com.google.common.collect.Lists { 
    public static ** reverse(**); 
} 
-keep class com.google.common.base.Charsets { 
    public static <fields>; 
} 

-keep class com.google.common.base.Joiner { 
    public static Joiner on(String); 
    public ** join(...); 
} 

-keep class com.google.common.collect.MapMakerInternalMap$ReferenceEntry 
-keep class com.google.common.cache.LocalCache$ReferenceEntry 
-keep class java.util.concurrent.ConcurrentHashMap$KeySetView 

-dontwarn sun.misc.Unsafe 
-dontwarn java.util.concurrent.ConcurrentHashMap$KeySetView 

Заранее спасибо

ответ

0

Я решил это сам, и ответить на мой собственный вопрос, так что решение может помочь другим

Предупреждение в основном указывает на решение:

Your input classes appear to be inconsistent. 
You may need to recompile the code. 

Сначала я думал, что это было мой код, который нужно перекомпилировать, но вместо этого был кодом JMDNS, который был неисправен. После загрузки исходного кода и его компиляции проблема не появилась

 Смежные вопросы

  • Нет связанных вопросов^_^