Почему android.util.LruCache. *не найдено при использовании Android -поддерживает -v4?

Я пишу проект, использующий LruCache, который включен в библиотеку совместимости android -support -v4.jar. При запуске на устройствах с JB код работает нормально, но когда я запускаю его на своем Droid X с GB, приложение умирает со следующими ошибками:

I/dalvikvm(2459): Could not find method android.util.LruCache.put, referenced from method blah.blah.Utility.getBitmap
W/dalvikvm(2459): VFY: unable to resolve virtual method 2641: Landroid/util/LruCache;.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
D/dalvikvm(2459): VFY: replacing opcode 0x6e at 0x0026
... [repeats similar lines]...
W/dalvikvm(2459): Unable to resolve superclass of Lblah/blah/Utility$1; (353)
W/dalvikvm(2459): Link of class 'Lblah/blah/Utility$1;' failed
E/dalvikvm(2459): Could not find class 'blah.blah.Utility$1', referenced from method blah.blah.Utility.initCaches
W/dalvikvm(2459): VFY: unable to resolve new-instance 559 (Lblah/blah/Utility$1;) in Lblah/blah/Utility;
D/dalvikvm(2459): VFY: replacing opcode 0x22 at 0x000d
D/dalvikvm(2459): VFY: dead code 0x000f-002c in Lblah/blah/Utility;.initCaches (ILandroid/content/Context;)V
I/dalvikvm(2459): Could not find method android.util.LruCache.get, referenced from method blah.blah.Utility.mCacheGet
W/dalvikvm(2459): VFY: unable to resolve virtual method 2640: Landroid/util/LruCache;.get (Ljava/lang/Object;)Ljava/lang/Object;
D/dalvikvm(2459): VFY: replacing opcode 0x6e at 0x0008
D/dalvikvm(2459): VFY: dead code 0x000b-000e in Lblah/blah/Utility;.mCacheGet (Ljava/lang/String;)Landroid/graphics/Bitmap;
... [repeats similar lines]...
D/AndroidRuntime(2459): Shutting down VM
W/dalvikvm(2459): threadid=1: thread exiting with uncaught exception (group=0x40018560)
E/AndroidRuntime(2459): FATAL EXCEPTION: main
E/AndroidRuntime(2459): java.lang.NoClassDefFoundError: blah.blah.Utility$1
E/AndroidRuntime(2459):     at blah.blah.Utility.initCaches(Utility.java:49)
E/AndroidRuntime(2459):     at blah.blah.MainActivity.onCreate(MainActivity.java:40)
... [etc]...
W/ActivityManager(1318):   Force finishing activity blah.blah/.MainActivity

Utility.java :49 выглядит так:

    mCache = new LruCache<String, Bitmap>( mCacheSize )   // <-- line 49 --
    {
        @Override
        protected int sizeOf( String key, Bitmap bitmap )
        {
            return bitmap.getByteCount();
        }
    };

Поэтому везде, где я ссылался на LruCache или его методы, возникает ошибка. Первое, что приходит на ум, это то, что поддержка Android --v4.jar каким-то образом была исключена из APK-файла, но это не похоже на тот случай. Я поместил файл jar в папку libs/ и, проверив class.dex.d после запуска ant debug, увидел, что он добавил следующую строку:

/home/paul/workspace/blah/libs/android-support-v4.jar \

Моя вторая мысль заключалась в том, что, возможно, LruCache не поддерживается в Android --v4, но, глядя на исходный код, я вижу, что там находится следующий исходный файл и что в нем есть методы, которые я пытаюсь использовать:

/home/paul/bin/android-sdk/extras/android/support/v4/src/java/android/support/v4/util/LruCache.java

Так почему не находят?

5
задан paulscode 6 August 2012 в 23:44
поделиться