😱
Androidのネイティブでビルドできない???
エラーの解決のためにやったこと
Android Studioがバージョンが新すぎると開発できないぽいので、ダウングレードしてFlamingoなるものに変更した。
⚙️ここで古いバージョンをインストールする
発生したエラーたち😱
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のバージョン変えて対応した。
違うエラーが出た!
追加したパッケージが新しすぎたのが原因かも?
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の変更も必要だったので結構詰まりました💦
検索して対象方法を調べながらなんとかビルド持って行きました。ネイティブは難しいですね🤦
Discussion