NoSuchMethodException возникает при использовании библиотеки Facebook Conceal на устройстве Android P.
Исключение выдается при вызове метода init класса SoLoader:
SoLoader.init(this, false);
Трассировка стека ошибок:
java.lang.NoSuchMethodException: nativeLoad [class java.lang.String, class java.lang.ClassLoader, class java.lang.String]
at java.lang.Class.getMethod(Class.java:2068)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at com.facebook.soloader.SoLoader.getNativeLoadRuntimeMethod(SoLoader.java:297)
at com.facebook.soloader.SoLoader.initSoLoader(SoLoader.java:249)
at com.facebook.soloader.SoLoader.initImpl(SoLoader.java:156)
at com.facebook.soloader.SoLoader.init(SoLoader.java:131)
at com.facebook.soloader.SoLoader.init(SoLoader.java:115)
at com.facebook.soloader.SoLoader.init(SoLoader.java:142)
В репозитории библиотеки есть открытый вопрос: https://github.com/facebookarchive/conceal/issues/197




Проблема связана с зависимостью Soloader, которая является частью библиотеки Conceal. Чтобы решить проблему, вам необходимо удалить зависимость Soloader из библиотеки Conceal, применить это исправление к версии Soloader 0.4.1, собрать из него aar и добавить его как отдельную независимую зависимость. Вы не можете использовать более высокие версии Soloader, поскольку они несовместимы с библиотекой Conceal.
Вам необходимо сохранить файл aar в папке /libs проекта Android, а файл build.gradle должен содержать следующее:
implementation(name: 'com.facebook.conceal-2.0.2-edited', ext: 'aar')
implementation(name: 'com.facebook.soloader-0.4.1.1', ext: 'aar')
Действия по удалению зависимости Soloader от Conceal:
Загрузите AAR-файл библиотеки Conceal из Maven Central.
Извлеките содержимое файла AAR. Для этого вы можете использовать любой инструмент для извлечения ZIP:
разархивировать скрыть-2.0.2.aar -d скрыть_извлеченный
Удалите все файлы Soloader:
zip -d скрыть_extracted/classes.jar "com/facebook/soloader/"*
Переупакуйте измененный файл AAR:
jar cvf com.facebook.conceal-2.0.2-edited.aar -C скрыть_извлеченный .
@ Роберт, это была моя первая попытка, но мне это не удалось. Поэтому разместил только этот ручной процесс.
Вместо того, чтобы вручную изменять файл aar, просто разветвляя репозиторий Github, альтернативой должно быть исправление зависимости и последующее использование его через Jitpack.io. И другие, у которых возникнет такая же проблема, также смогут использовать ваш репозиторий.