TargetSdkVersion — 28, но самый высокий уровень API — 26.

Я пытаюсь обновить свое приложение с Nougat API level 26 до Android Pie, API level 28. Я установил для targetSdkVersion значение 28, а для compileSdkVersion — 28. Я также обновил все версии своей библиотеки поддержки до последней версии (тоже 28). Вот файл сборки Gradle моего приложения:

файл build.gradle

Сборка работает нормально, и я протестировал ее на виртуальном устройстве уровня API 28, Nexus 5X API 28 и Pixel 2 XL API 28.

Однако, когда я загружаю его в консоль Google Play, он показывает следующее: Уровни API — 19-26, но targetSdkVersion — 28

Я знаю, что это будет означать, что не будет никаких изменений в том, какие устройства совместимы (поскольку предыдущая версия также была до уровня API 26).

Я пытался искать в Интернете, но я не мог найти ответ. Большинство результатов поиска говорят вам обновить targetSdkVersion, поддерживать версии библиотек и compileSdkVersion до 28, что я уже сделал. Другая половина связана с разницей между minSdkVersion и targetSdkVersion.

Что я здесь делаю неправильно?


person Moon Cheesez    schedule 04.01.2019    source источник
comment
Знаете ли вы об AndroidX?   -  person Morrison Chang    schedule 04.01.2019
comment
Да, я знаю об этом, но я собираюсь перейти к этому позже   -  person Moon Cheesez    schedule 04.01.2019
comment
Я в замешательстве, к чему ваш вопрос? Если вы не используете API 28, эти вызовы могли быть удалены как часть proguard.   -  person Morrison Chang    schedule 04.01.2019
comment
Мой вопрос заключается в том, как мне обновить свое приложение, чтобы оно могло поддерживать Android Pie. Я попробую отключить proguard и посмотреть, что произойдет   -  person Moon Cheesez    schedule 04.01.2019
comment
@MorrisonChang Proguard на это не влияет. Я попытался добавить useProguard false в дополнение к minifyEnabled выше.   -  person Moon Cheesez    schedule 04.01.2019
comment
Я думаю, что вы запутались в консоли Google Play. Если вы протестировали свое приложение на эмуляторе/реальном устройстве с соответствующими уровнями API, оно работает. Обработка того, что делает приложение, когда оно использует более высокий API на более низком устройстве или устаревший API, также является обязанностью разработчика. Если у вас возникают сбои или низкая производительность на непроверенных устройствах, вы с этим справляетесь, поскольку существует много тысяч устройств Android. Если вы не можете указать, какой API 27/28 вы явно используете, я бы не беспокоился.   -  person Morrison Chang    schedule 04.01.2019
comment
@MorrisonChang Извините, я имел в виду, что я просто хочу, чтобы пользователи Android Pie могли загрузить мое приложение из магазина игр.   -  person Moon Cheesez    schedule 04.01.2019
comment
Я не понимаю, почему устройства Android Pie не смогут загрузить ваше приложение. См.: developer.android.com/guide/practices/compatibility и, в частности, developer.android.com/training/basics/supporting-devices/   -  person Morrison Chang    schedule 04.01.2019


Ответы (2)


Во-первых, вам не обязательно ставить buildTools на Android P, это не является обязательным требованием. Во-вторых, убедитесь, что вы используете SDK на своей Android Studio. И проверьте это руководство по миграции, предоставленное Google: https://developer.android.com/about/versions/pie/android-9.0-migration

person Dinorah Tovar    schedule 04.01.2019
comment
Насколько я знаю, я следовал этому правилу. Я могу запустить приложение, удовлетворяя первому правилу. Я также использую Android 9 SDK (как показано в compileSdkVersion). - person Moon Cheesez; 04.01.2019

После того, как @MorrisonChang связал https://developer.android.com/training/basics/supporting-devices/platforms Я снова проверил его и нашел одну часть, в которой говорится о манифесте Android.

Файл AndroidManifest.xml описывает сведения о вашем приложении и указывает, какие версии Android оно поддерживает. В частности, атрибуты minSdkVersion и targetSdkVersion для элемента определяют самый низкий уровень API, с которым ваше приложение совместимо, и самый высокий уровень API, с которым вы разработали и протестировали свое приложение.

Я думал, что файл сборки gradle переопределит любые элементы, связанные с версией SDK, из-за -в-и">здесь. но я все же пересмотрел свой манифест Android.

Судя по всему, в моем манифесте Android была строка:

<uses-sdk android:maxSdkVersion="26"/>

Это установило мой максимальный уровень API. После увеличения до 28 все заработало.

person Community    schedule 04.01.2019