Ошибка сборки выпуска Android после обновления до Gradle wrapper до 7.0.2 и JDK 11

#java #android #android-studio #kotlin #gradle

Вопрос:

Я обновил свою студию Android до Artic Fox, а также обертку Gradle до 7.0.2 (плагин 7.0.0) и JDK 1.8 -> 11.

Когда я устанавливаю отладочную сборку на свое устройство через Android Studio, она работает и без ошибок.

Теперь всякий раз, когда я пытаюсь создать APK-файл выпуска, сборка всегда завершается ошибкой Lint. Не уверен, что происходит.

 w: Runtime JAR files in the classpath have the version 1.4, which is older than the API version 1.5. Consider using the runtime of version 1.5, or pass '-api-version 1.4' explicitly to restrict the available APIs to the runtime of version 1.4. You can also pass '-language-version 1.4' instead, which will restrict not only the APIs to the specified version, but also the language features
w: /Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.10/998caa30623f73223194a8b657abd2baec4880ea/kotlin-stdlib-jdk8-1.4.10.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5
w: /Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.31/84ce8e85f6e84270b2b501d44e9f0ba6ff64fa71/kotlin-stdlib-jdk7-1.4.31.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5
w: /Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.32/461367948840adbb0839c51d91ed74ef4a9ccb52/kotlin-stdlib-1.4.32.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5
w: /Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.32/ef50bfa2c0491a11dcc35d9822edbfd6170e1ea2/kotlin-stdlib-common-1.4.32.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5
/src/main/AndroidManifest.xml:23: Error: SplashScreenActivity must extend android.app.Activity [Instantiatable]
            android:name="com.abc.xyz.activity.SplashScreenActivity"
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/main/AndroidManifest.xml:36: Error: MainActivity must extend android.app.Activity [Instantiatable]
            android:name="com.abc.xyz.activity.MainActivity"
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/main/AndroidManifest.xml:66: Error: PlayerActivity must extend android.app.Activity [Instantiatable]
            android:name="com.abc.xyz.activity.PlayerActivity"
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   Explanation for issues of type "Instantiatable":
/Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.10/998caa30623f73223194a8b657abd2baec4880ea/kotlin-stdlib-jdk8-1.4.10.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5

   Activities, services, broadcast receivers etc. registered in the manifest
   file (or for custom views, in a layout file) must be "instantiatable" by
   the system, which means that the class must be public, it must have an
   empty public constructor, and if it's an inner class, it must be a static
   inner class.

/Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.31/84ce8e85f6e84270b2b501d44e9f0ba6ff64fa71/kotlin-stdlib-jdk7-1.4.31.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5

3 errors, 0 warnings
Lint found fatal errors while assembling a release target.

To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}
 

Я не уверен, почему у меня есть эти Instantiatable ошибки в действиях. Все эти виды деятельности расширяют ту BaesActivity , которая расширяется AppCompatActivity . Так что ошибка на самом деле не имеет никакого смысла.
Но когда я понижаю обертку Gradle до 6.7.1 (плагин 4.2.2) и JDK 1.8…все проходит гладко.

кроме того, у меня есть такие предупреждения, как

 /Users/xxx/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.10/998caa30623f73223194a8b657abd2baec4880ea/kotlin-stdlib-jdk8-1.4.10.jar: Runtime JAR file has version 1.4 which is older than required for API version 1.5
 

Что это за предупреждение и как его исправить?

Комментарии:

1. У меня та же ошибка с AGP 7.0.2. Вы ее уже устранили?

2. @GabiMoreno Я не нашел подходящего способа сделать это, поэтому я пока возвращаюсь к AGP 4.2.2 и JDK 1.8

3. ОК. Спасибо, @Nishant 🙂

Ответ №1:

После долгих поисков я нашел решение этой проблемы.

Сборка завершается неудачно из Instantiatable -за проверки ворса.

 Activities, services, broadcast receivers etc. registered in the manifest
   file (or for custom views, in a layout file) must be "instantiatable"
 

Для этого есть несколько решений,

  1. Обновление уровня приложения build.gradle (хотя и не желательно)
 android {
    lintOptions {
        disable "Instantiatable"
    }
}
 
  1. Если ваше приложение зависит от библиотечного модуля (как и у меня, у меня были базовые действия в библиотечных модулях), затем отключите minifyEnabled библиотечный модуль, в этом нет необходимости, если вы не пытаетесь опубликовать библиотечный модуль (файл.aar).

Решите вопрос отсюда.

Более конкретно этот комментарий отсюда.

Ответ №2:

Перейдите в Файл -> Настройки>, найдите Kotlin Complier и измените языковую версию на 1.4

введите описание изображения здесь

в настройках компилятора вы можете задать версию api, версию языка и параметры командной строки.

Комментарии:

1. @Farmanbar, я пытался, но это не помогло.

2. @Nishant интересно, вы очистили и заново построили проект?

Ответ №3:

У меня была та же проблема. Я могу решить эту проблему с помощью этого трюка: 1) Очистить проект 2) Перестроить проект 3) Открыть эмулятор с некоторым API 4) Перейти от отладки к выпуску (Вариант активной сборки) 5) Пакет сборки / APK > Пакет сборки

Я не знаю, работает ли это для тебя.