質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

1086閲覧

Flutterプロジェクトのビルドに失敗する

退会済みユーザー

退会済みユーザー

総合スコア0

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

1グッド

0クリップ

投稿2020/02/23 01:51

初心者質問で申し訳ないのですが、どのタイミングか不明なのですが、Flutterプロジェクトがビルドできなくなりました。
実行ボタンを押してもエミュレーターにapkがインストールされません。

おそらく、タイミング的にはFirebase関連の実装をしている際に起きていると思われます。
根拠としては、ターミナルからFlutter runすると以下が出力され、その中を読むとfirebase_authに関連するエラーと思われるからです。

pubspec.yaml~build.gradleはstackoverflowあたりの類似のトラブルシューティングを見ていろいろと弄った結果です。
gradleに関する知識に乏しく、あまり的確な質問ができていないと思いますが、何かしら思い当たる箇所がございましたらご指摘いただければ幸いです。よろしくお願いいたします。(副次的ですが、ターミナルが文字化けしている原因もご教示いただければ幸いです。)

C:\Users\okape\Documents\flutter_app>flutter run Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering". Launching lib\main.dart on Android SDK built for x86 in debug mode... registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection) C:\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.6.2+1\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:8: �G���[: �p�b�P�[�Wandroid. support.annotation�͑��݂��܂��� import android.support.annotation.NonNull; ^ C:\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.6.2+1\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:538: �G���[: �V���{���� public void onComplete(@NonNull Task<AuthResult> task) { ^ �V���{��: �N���X NonNull �ꏊ: �N���X FirebaseAuthPlugin.SignInCompleteListener C:\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.6.2+1\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:558: �G���[: �V���{���� public void onComplete(@NonNull Task<Void> task) { ^ �V���{��: �N���X NonNull �ꏊ: �N���X FirebaseAuthPlugin.TaskVoidCompleteListener C:\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.6.2+1\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:576: �G���[: �V���{���� <途中略> FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':firebase_auth:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details.

プロジェクト構成は以下のとおりです。
イメージ説明

pubspec.yaml

name: flutter_app description: A new Flutter application. version: 1.0.0+1 environment: sdk: ">=2.1.0 <3.0.0" dependencies: flutter: sdk: flutter cupertino_icons: ^0.1.2 firebase_auth: ^0.6.2+1 cloud_firestore: ^0.13.0+1 firebase_core: ^0.4.0 dev_dependencies: flutter_test: sdk: flutter flutter: uses-material-design: true assets: - assets/

androidフォルダ直下のbuild.gradle

buildscript { ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:3.2.1' // Google Services plugin } } allprojects { repositories { google() jcenter() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir }

app直下のbuild.gradle

def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 29 sourceSets { main.java.srcDirs += 'src/main/kotlin' } lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/buiYld/application-id.html). applicationId "com.example.flutter_app" minSdkVersion 16 targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } apply plugin: 'com.google.gms.google-services' // Google Play services Gradle plugin

app直下のbuild.gradle

def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 29 sourceSets { main.java.srcDirs += 'src/main/kotlin' } lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/buiYld/application-id.html). applicationId "com.example.flutter_app" minSdkVersion 16 targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } apply plugin: 'com.google.gms.google-services' // Google Play services Gradle plugin
popobot👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これだけで解決するかはわかりませんが、firebase_authのバージョンが古いことが影響している可能性があります。他のFirebaseのライブラリは最新なので、firebase_authも最新を使った方がいいと思います。`

0.6.2+1は1年以上前のバージョンです。

投稿2020/02/23 05:12

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/23 06:00

ありがとうございます。確かにおっしゃるとおり古かったです。すべて最新VerにしてPackage Getし、flutter cleanしてビルドし直してみました。すると次は以下のように表示され、ビルドが失敗しました。 ``` AGPBI: {"kind":"error","text":"Type com.google.android.gms.common.internal.zzf is referenced as an interface from `com.google.android.gms.internal.zzcfb`.","sources":[{}],"tool":"D8"} * What went wrong: Execution failed for task ':app:mergeExtDexDebug'. > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. > Failed to transform artifact 'firebase-analytics-impl.aar (com.google.firebase:firebase-analytics-impl:11.4.2)' to match attributes {artifactType=android-dex, dexing-enable-desuga ring=true, dexing-is-debuggable=true, dexing-min-sdk=16, org.gradle.usage=java-runtime}. > Execution failed for DexingWithClasspathTransform: C:\Users\okape.gradle\caches\transforms-2\files-2.1\1cd55043960cd668e74fb5c5f9cfadfe\jetified-firebase-analytics-impl-11.4.2 -runtime.jar. > Error while dexing. ``` この失敗の原因は引き続き調べますが、もし何かご存知であればご指摘いただければ幸いです。 また、pubspec.yamlにバージョン指定する際、毎回、Webで該当のライブラリを検索し、バージョンを確認していますが、もっと効率的なやりかたってあるんでしょうか。(^付けて少し低めのバージョンにしておけば勝手に新しいのを持ってくるとは思うんですが、本投稿のようにあまりに古いバージョンを使ってしまっている場合に効率的にそれにきづける方法はないかと考えておりました) 何卒、よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/02/23 06:23

上記について、以下のページを参照に解決しました。 [cloud_firestore,firebase_auth] Gradle error on adding firebase to any flutter app · Issue #1494 · FirebaseExtended/flutterfire https://github.com/FirebaseExtended/flutterfire/issues/1494 →修正したのは以下のコメントのとおりです。 > Using classpath 'com.google.gms:google-services:4.3.3' instead of the specified classpath 'com.google.gms:google-services:3.2.1' worked for me aswell! 64K を超えるメソッドを使用するアプリ向けに multidex を有効化する  |  Android デベロッパー https://developer.android.com/studio/build/multidex >minSdkVersion が 21 以上の場合は multidex がデフォルトで有効であり、 とあったので、build.gradleのminSdkVersionを16→29にしました。
popobot

2020/02/23 07:10

minSdkVersionを29にしてしまうと、最新のAndroidでしかアプリが動作しなくなってしまいますよ。 21にしておいた方がいい気もしました(要件次第ですが) バージョン指定は any を指定すると、upgrade 時に最新を取得できます
退会済みユーザー

退会済みユーザー

2020/02/23 11:09

ご指摘ありがとうございます。SDKバージョンはさすがに強引でした。個人の趣味レベルの開発なので一旦、29にしていますが、少し要件を明確にして決定します。 バージョン指定、anyという指定方法もあるんですね! 知りませんでした。 ググりまくっていますが、知らないことばかりで大変勉強になります。 どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問