2012-03-16 7 views
1

В основном я стараюсь, как этот парень: How can I tell proguard to assume a package is not used?, но не могу добавить комментарий.Proguard и Netty на Android

Я продолжаю получать предупреждения, как это:

Warning: org.jboss.netty.logging.Slf4JLogger: can't find referenced class org.slf4j.Logger

В основном, org.jboss.netty.logging.Slf4JLogger ссылается третья сторона библиотека класса org.slf4j.Logger который не является частью моего проекта. org.jboss.netty.logging.Slf4JLogger также не используется.

Итак, я пытаюсь рассказать proguard, чтобы не загружать/использовать org.jboss.netty.logging.Slf4JLogger, как предложил Эрик Лафортун, но постоянно терпит неудачу. Я добавил -injars libs/netty-3.3.1.Final.jar(!**Slf4JLogger) или -injars libs/netty-3.3.1.Final.jar(!**Slf4JLogger.class), но это, кажется, ничего не делает. Даже -injars libs/netty-3.3.1.Final.jar("!whatever is in here") дает те же результаты, поэтому я предполагаю, что этот вариант ничего не делает ...

Как я могу сообщить Proguard о том,

+1

Теперь я использую netty 4, и найденный выше не может работать на netty 4, может ли кто-нибудь помочь дальше? Большое спасибо. – xeoshow

ответ

1

Использование новейших ADT (18.0), которая устраняет некоторые проблемы, связанные с интеграцией ProGuard (по сравнению с ADT 16,00), я был в состоянии успешно запустить мой на основе Нетти приложение со следующими дополнительными Настройки Proguard:

# Get rid of warnings about unreachable but unused classes referred to by Netty 
-dontwarn org.jboss.netty.** 

# Needed by commons logging 
-keep class org.apache.commons.logging.* {*;} 

#Some Factory that seemed to be pruned 
-keep class java.util.concurrent.atomic.AtomicReferenceFieldUpdater {*;} 
-keep class java.util.concurrent.atomic.AtomicReferenceFieldUpdaterImpl{*;} 

#Some important internal fields that where removed  
-keep class org.jboss.netty.channel.DefaultChannelPipeline{volatile <fields>;} 

#A Factory which has a static factory implementation selector which is pruned 
-keep class org.jboss.netty.util.internal.QueueFactory{static <fields>;} 

#Some fields whose names need to be maintained because they are accessed using inflection 
-keepclassmembernames class org.jboss.netty.util.internal.**{*;} 

Мои выводы о том, почему нужна конкретная строка, могут быть не на 100% точными, и это, безусловно, не обязательно настроенные решения, но, по крайней мере, это работает. Не стесняйтесь редактировать, если вы думаете, что можете улучшить это.

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