Zgodność wersji androida i wymaganej wersji bibliotek

0

Witajcie

Stawiam dziś pierwsze kroki w Android Studio i napotkałem problem, ponieważ podczas uruchamiania emulatora z górnej belki programu wyskakuje mi taki komunikat:
Emulator.jpg

An issue was found when checking AAR metadata:

  1.  Dependency 'androidx.activity:activity:1.8.0' requires libraries and applications that
      depend on it to compile against version 34 or later of the
      Android APIs.

      :app is currently compiled against android-33.

      Recommended action: Update this project to use a newer compileSdk
      of at least 34, for example 34.

      Note that updating a library or application's compileSdk (which
      allows newer APIs to be used) can be done separately from updating
      targetSdk (which opts the app in to new runtime behavior) and
      minSdk (which determines which devices the app can be installed
      on).

Podczas uruchamiania emulatora z "Device Menager" emulator się uruchamia, ale sam system androida bez powitania Hello World (bez aplikacji).
Rozumiem z błędu tyle że mam coś zaktualizować z wersji 33 do 34, ale nie wiem co dokładnie i jak to zrobić.
Proszę o pokierowanie na rozwiązanie problemu.

1

screenshot-20231019084445.png

Ja bym zaczął od zainstalowania nowszego obrazu do Androida.
Popatrz - błąd, który jest zgłaszany mówi jasno, że wymaga wersji 34, apka jest kompilowana na 33, a chcesz to odpalić na Pixelu z wersją 30.
Na obrazku widać przycisk Create Device - wciśnij go i wybierz jakiś obraz z API 34 lub wyższym.

0

Wtf, to przecież nie jest problem z emulatorem, tylko z twoją aplikacją. Nie uruchamiasz emulatora tylko budujesz aplikację i aplikacja się nie buduje bo masz coś źle.

To działa tak, że najpierw buduje się apka a potem jest automatycznie uruchamiana na emulatorze. U ciebie wywaliło się na tym pierwszym, a emulator możesz sobie uruchomić jak chcesz, to nie ma żadnego związku

0

Ale aplikacja została wygenerowana z gotowego szablonu Android Studio, nic w niej nie zmieniałem.
jedynie dodawałem urządzenia.

Faktycznie jak zmieniłem w "Create Device" (Pixel 6 Pro) na API 34 to zadziałało, ale już dla starszego modelu telefonu (Pixel 3XL API 34), nie działa.
I czemu to tak? Czy przez to że ten model by nie obsługiwał by nowszej wersji systemu?
To jak mam przetestować aplikację dla Androida np. 11?

A w tym filmie mógł sobie wybierać dowolne API, przynajmniej tak to wygląda, chyba że czegoś nie dopatrzyłem.

0

Biblioteka z której korzysta projekt ma compileSDK na 34. Twój projekt ma compileSDK na 33. Podbij wersję w gradle do 34 i zacznie działać

0

Czy chodzi o kroki przedstawione na tej stronie? bo to nic nie dało...
link

0

Znalazłem rozwiązanie problemu, powodował je Visual Studio w którym SDK jest w wersji 33.
Aby naprawić problem trzeba w pliku Gradle Scripts > build.gradle.kts zmienić "compileSdk" na wersję 34 i tak samo z "targetSDK".

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.myapplication"
    compileSdk = 34 // było 33

    defaultConfig {
        applicationId = "com.example.myapplication"
        minSdk = 24
        targetSdk = 34 // było 33
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {

    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.10.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
0

Przy tworzeniu nowego projektu z szablonu compileSdk i targetSdk automatycznie ustawi sie na najnowszy, jaki masz zainstalowany. Jeśli potem w build.gradle podbijesz na wyższy to jeśli taki jest to się doinstaluje automatycznie

1 użytkowników online, w tym zalogowanych: 0, gości: 1