Ответ 1
Это может быть связано с
ClassNotFoundException после обновления ADT или
Eclipse дает ошибку, отсутствует файл R.java после недавнего обновления,
которые были решением общих проблем в rev. 22.
Со времени последнего обновления для библиотек поддержки Android у меня возникают проблемы с импортом LruCache. Eclipse, а теперь даже андроид-студия, продолжайте говорить, что пакет android.support.v4.util не существует.
Я использую actionbarsherlock, и он включил поддержку android v4 и не показывает ошибок. Мое приложение отлично работало до последнего обновления SDK. Что изменилось? Как это исправить?
Вот ошибка, которая показывает:
java: /Users/amit/App/src/com/app/EMCache.java:5: package android.support.v4.util does not exist
java: /Users/amit/App/src/com/app/EMCache.java:9: cannot find symbol
symbol : class LruCache
location: class com.app.EMCache
java: /Users/amit/App/src/com/app/EMCache.java:20: cannot find symbol
symbol : class LruCache
location: class com.app.EMCache
Это может быть связано с
ClassNotFoundException после обновления ADT или
Eclipse дает ошибку, отсутствует файл R.java после недавнего обновления,
которые были решением общих проблем в rev. 22.
В моем случае решение в конечном итоге было найдено как зарегистрированное здесь:
<sdk>/extras/android/support/v4/android-support-v4.jar
) в каталог libs/.Если вы используете Gradle
, мне также нужно добавить эту строку в раздел зависимостей моего внутреннего build.gradle
, файла, в котором вы указываете свои minSdkVersion
и targetSdkVersion
:
dependencies {
compile "com.android.support:support-v4:19.0.+"
}
Я считаю, что '19'
должен быть любым вашим compileSdkVersion
. Если я ошибаюсь, это скажет вам, что это должно быть.
Для тех, кто импортирует библиотеки поддержки с помощью gradle следующим образом:
// compat libraries
compile 'com.android.support:support-v4:23.2.0' // v4
compile 'com.android.support:appcompat-v7:23.2.0' // v7
compile 'com.android.support:support-v13:23.2.0' //v13
Не забудьте удалить этот все *.exclude модуль: 'support-v4' из конфигураций
configurations {
//all*.exclude module: 'support-v4'
}
... Возможно, это была фиктивная ошибка из моей части:)
В моем случае я портировал приложение API GoogleMaps API1 в API2, и через много часов я понял, что не добавляю
C:\Program Files\..(your_path_)..
..\adt-bundle-windows-x86_64\sdk\extras\android\support\v4
для внешних библиотек..
Надеюсь, что это поможет
расширенный ответ:
dependencies {
compile "com.android.support:support-v4:19.0.+"
}
работал у меня. Но (в моем случае, по крайней мере) "19" должны соответствовать compileSdkVersion
Перейдите в каталог Android SDK и:
jar tvf./extras/android/support/v13/android-support-v13.jar | grep v4. * util
И в этом файле jar вы можете увидеть один из классов (под v4/util), который вы использовали в своих приложениях.
0 Wed Mar 26 20:29:48 SGT 2014 android/support/v4/util/
3373 Wed Mar 26 20:29:48 SGT 2014 android/support/v4/util/ArrayMap.class
5329 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections.class
1625 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/ContainerHelpers.class
3677 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections$KeySet.class
1220 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/DebugUtils.class
3435 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/AtomicFile.class
1287 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/LogWriter.class
3701 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections$ValuesCollection.class
4446 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections$EntrySet.class
5910 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/SparseArrayCompat.class
3273 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/TimeUtils.class
5776 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/LongSparseArray.class
5680 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/LruCache.class
3341 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections$MapIterator.class
1575 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/MapCollections$ArrayIterator.class
2439 Wed Mar 26 20:29:48 SGT 2014 android/support/v4/util/ArrayMap$1.class
8611 Wed Mar 26 20:29:46 SGT 2014 android/support/v4/util/SimpleArrayMap.class
Таким образом, пакет "android.support.v4.util" ошибки не существует "просто означает, что вы должны скопировать указанный выше файл jar в подкаталог libs и перекомпилировать.
В моем случае проблема заключалась в ссылке на jar из папки установки sdk, копирование jar в папку проекта libs, добавление в путь сборки фактически разрешило проблему.
В моем случае с Android Studio эта ошибка появилась в середине рабочего проекта и отказалась исчезнуть, несмотря на много шума. Я, наконец, принудительно выполнил операцию Gradle Sync, добавив один пробельный символ в файл Gradle. Синхронизация Gradle моментально зафиксировала его.
добавить зависимость
dependencies { compile 'com.android.support:support-v4:+'}
Изменить инструмент сборки
dependencies { classpath 'com.android.tools.build:gradle:2.3.0'}
Работал для меня.
Шаг 1: Откройте Project в AndroidStudio3.3 или выше, дождитесь завершения загрузки проекта.
Шаг 2: Щелкните правой кнопкой мыши "приложение" → Refactor → Migrate to AnroidX
Шаг 3: Просмотрите изменения в консоли AndroidStudio ниже и нажмите "Выполнить рефакторинг"
Проблема будет исправлена.
Попытавшись настроить build.gradle различными способами, мы нашли решение, найденное здесь: https://github.com/kmagiera/react-native-gesture-handler/issues/394#issuecomment-508358572
короче говоря - вы можете решить это с помощью jetifier
:
npm install --save-dev jetifier npx jetify
Из пакета документов:
Если вы используете модули React Native с собственным кодом Java, который не преобразован в AndroidX, и ваше приложение - AndroidX, вам, вероятно, это понадобится.