😱

Androidのネイティブでビルドできない???

2023/09/09に公開

エラーの解決のためにやったこと

Android Studioがバージョンが新すぎると開発できないぽいので、ダウングレードしてFlamingoなるものに変更した。

⚙️ここで古いバージョンをインストールする

https://developer.android.com/studio/archive?hl=ja

発生したエラーたち😱

Android Studioをダウングレードした。
しかし、ビルドができなくなった?

Build file '/Users/JJ_APP/MyNavigation/app/build.gradle' line: 2

An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
      Your current JDK is located in /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
      You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Exception is:
org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'com.android.application']
	at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.exceptionOccurred(DefaultPluginRequestApplicator.java:222)
	at 

Javaのバージョン変えて対応した。
https://android.benigumo.com/20211202/androidstudio-java-jdk/


違うエラーが出た!
追加したパッケージが新しすぎたのが原因かも?

6 issues were found when checking AAR metadata:

  1.  Dependency 'androidx.navigation:navigation-common:2.7.2' 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.

      Also, the maximum recommended compile SDK version for Android Gradle
      plugin 8.0.2 is 33.

      Recommended action: Update this project's version of the Android Gradle
      plugin to one that supports 34, then update this project to use
      compileSdk of at least 34.

      Note that updating a library or application's compileSdk 

build.gradleの設定を変更して対応した。

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.example.mynavigation'
    compileSdk 34 // 33 -> 34に変更

    defaultConfig {
        applicationId "com.example.mynavigation"
        minSdk 24
        targetSdk 34// 33 -> 34に変更
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled 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'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.3.2'
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.8.0'
    implementation platform('org.jetbrains.kotlin:kotlin-bom:1.8.0')
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
    implementation 'androidx.activity:activity-compose:1.5.1'
    implementation platform('androidx.compose:compose-bom:2022.10.00')
    implementation 'androidx.compose.ui:ui'
    implementation 'androidx.compose.ui:ui-graphics'
    implementation 'androidx.compose.ui:ui-tooling-preview'
    implementation 'androidx.compose.material3:material3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    androidTestImplementation platform('androidx.compose:compose-bom:2022.10.00')
    androidTestImplementation 'androidx.compose.ui:ui-test-junit4'
    debugImplementation 'androidx.compose.ui:ui-tooling'
    debugImplementation 'androidx.compose.ui:ui-test-manifest'

    def nav_version = "2.7.2"

    implementation "androidx.navigation:navigation-compose:$nav_version"
}

APIレベルのエラーが出た!

09/09 16:21:42: Launching 'app' on Pixel 3 (Edited) API 32.
Error while waiting for device: Pixel 3 (Edited) API 32 is already running. If that is not the case, delete /Users/hashimotojunichi/.android/avd/Pixel_3_Edited_API_32.avd/*.lock and try again.

エミュレーターのAPIレベルが34じゃないので怒られたから新しいのを作ったら対処できた!

ボタンが大きいですけど、ビルドできました!

まとめ

Androidのネイティブを最近学習して思うのですがFlutterと違うのは、バージョンを合わせて動かすのが難しいな〜と感じるところでした。
IDEの変更以外に、Java Jdkの変更も必要だったので結構詰まりました💦
検索して対象方法を調べながらなんとかビルド持って行きました。ネイティブは難しいですね🤦

Jboy王国メディア

Discussion