2012-03-15 1 views
3

У меня есть некоторые html-файлы в res/raw, которые я открываю в WebView. Но после обфускации они не могут загрузить.Android: Не могу найти файл .html в res/raw после обфускации

+0

Что вы хотите сказать, не смогли загрузить? Можете ли вы предоставить код, который вы используете для загрузки html-файла? – Calvin

+1

AFAIK, ProGuard не запутывает ресурсы. Каковы ваши доказательства того, что эта проблема связана с ProGuard? Как вы пытаетесь «загрузить» эти данные? Какова ваша ** точная ** ошибка (включая трассировку стека, если это исключение во время выполнения)? – CommonsWare

+0

Я загружаю URL таким образом webView.loadUrl ("file: ///android_res/raw/help.html"); Когда я создаю сборку Obfuscate, я получаю «Не загруженную веб-страницу». Иначе это работает без сборки Obfuscate. – Neha

ответ

6

Я столкнулся с этой же проблемой. У меня есть html-файл справки в raw и после обфускации. Я запускаю свое приложение и получаю сообщение об ошибке, что файл не найден.

Вот мой HelpActivity класс:

public class HelpActivity extends BaseActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     // requesting to turn the title OFF 
     //requestWindowFeature(Window.FEATURE_NO_TITLE); 
     // making it full screen 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.help); 
     setTitle(getString(R.string.help_title)); 
     WebView webView = (WebView) findViewById(R.id.webView); 
     webView.loadUrl("file:///android_" + getString(R.raw.how_to_play_zeewee)); 
    } 
} 

Я исправил эту проблему, добавив следующую строку в моей proguard.cfg файл:

-keepclassmembers class **.R$* {public static <fields>;} 
-keep class **.R$* 

Вы, наверное, уже есть первая линия, но это делает не препятствует этому вопросу. Добавление второй строки полностью устранило проблему. Я не думаю, что первая строка по-прежнему нужна, но я еще не тестировал ее, и поскольку она в настоящее время работает ...;).

+0

Только добавление второй линии работает для меня! Благодаря! – Harry

0

добавить следующее в вашем proguard.cfg и посмотреть, если это делает никакой разницы

-keep public class com.yourPackageName.yourAppName.R 
-keepclassmembers class **.R$ { public static ; } 
+3

Если это так, то после использования ProGuard ничего не получится , Мы не могли загружать макеты, или меню, или значки, или любой другой ресурс. Есть ли у вас доказательства того, что ProGuard запутывает «R»? Я думаю, если бы это было проблемой, файл 'proguard.cfg' в складе содержал бы какой-то класс' -keepclassmembers class **. R $ * '. – CommonsWare