Получение времени выполнения "java .lang.NoClassDefFoundError" для класса активности, записанного / определенного в файле ".aar" Android Studio - PullRequest
2 голосов
/ 23 января 2020

Я создал один библиотечный проект, в котором я создал один медиаплеер. Теперь я собираюсь сделать этот Media Player многократно используемым в любом приложении Android, я имею в виду, что я предоставлю файл ".aar" любому разработчику android, затем он / она добавит его в качестве зависимости в Android проекте просто вызывая MediaPlayerActivity в своем коде, они могут использовать его.

Теперь проблема в том, что если я использую этот проект библиотеки мультимедиа в качестве модуля проекта (например, проект реализации (": mymediaplayer") ), то все работает нормально, но когда я создаю ".aar" файл этой библиотеки мультимедиа и пытаюсь использовать его в качестве зависимости (например, реализация (имя: 'mymediaplayer', ext: 'aar') ), тогда Я получаю Runtime "java .lang.NoClassDefFoundError" для класса MediaActivity.class, записанного в той же библиотеке, которую я вызываю из отдельного Android Project.

Ниже приведены инструкции по использованию .aar -

1] Я скопировал файл "mymediaplayer.aar" в папку "libs" моего android проекта.

2] Записанный ниже код в файл build.gradle уровня проекта

    allprojects {
    repositories {
        google()
        flatDir {
            dirs 'libs'
        }
        jcenter()
    }
}

3] Ниже приведена зависимость в файле build.gradle уровня приложения -

implementation(name: 'mymediaplayer', ext: 'aar')

4] Ниже показано, как я вызываю MediaActivity.class из моего Android проекта -

Intent mediaIntent = new Intent(MainActivity.this, MediaActivity.class); // Getting error on this line 
videoIntent.putExtra("VIDEO_URL", "http://xxxxyyyyzzz.mp4");
                    startActivity(mediaIntent );

5] Результат:

 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/my_package/MediaActivity;

Надеюсь, данная информация достаточно, чтобы понять мою проблему, но все же, если вам, ребята, нужно больше подробностей, пожалуйста, дайте мне знать.

Я нашел несколько вопросов, заданных ранее в StackOverflow по той же проблеме, но, к сожалению, ни один из них я не нашел полезным для меня, и поэтому мне нужны предложения от ваших экспертов. Спасибо

1 Ответ

1 голос
/ 23 января 2020

Я объявил зависимости с транзитивной опцией, например:

dependencies {
  implementation(name: 'mymediaplayer', ext: 'aar') {
    transitive = true
  }
}

Ошибка исчезнет.

...