Flutterで作るWear OSアプリ開発ガイド 〜環境構築からよくあるビルドエラー解決法まで

に公開

Flutterで作るWear OSアプリ開発 〜環境構築からよくあるビルドエラー解決法まで〜

1. はじめに

Flutterを使って、Wear OS向けのスマートウォッチアプリを開発する魅力と、その基本的な流れを紹介する。

  • この記事で得られること:
    • Wear OS開発のための環境構築手順
    • wearパッケージを使った基本的なUI実装方法
    • 開発中につまずきがちなビルドエラーとその解決策
    • 簡単なサンプルアプリ(漢字表示アプリ)の実装イメージ

2. 開発環境のセットアップ

  1. FlutterとAndroid Studio: 最新版がインストールされていることを前提とする。
  2. Wear OSエミュレータの作成:
    • Android StudioのDevice Managerを開く。
    • Create device > Wear OSカテゴリを選択。
    • Wear OS 4 (API 33)など、目的のOSバージョンを選択してエミュレータを作成する
  3. Flutterプロジェクトの作成:
    • flutter create wear_os_appコマンドで新しいプロジェクトを作成する。

3. wearパッケージの導入と基本

FlutterでWear OSアプリを開発するための必須パッケージwearを紹介します。

  1. pubspec.yamlへの追加:

    dependencies:
      flutter:
        sdk: flutter
      wear: ^1.1.0 # 2025年7月時点でのバージョン
    
  2. WearShapeウィジェット:

    • Wear OSデバイスの形状(円形・正方形)を判別し、UIを自動で調整してくれる非常に便利なウィジェット。
    • 基本的な使い方として、"Hello, Wear OS!" を画面中央に表示するサンプルコードを提示。
    // lib/main.dart
    import 'package:flutter/material.dart';
    import 'package:wear/wear.dart';
    
    void main() => runApp(const MyApp());
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            body: Center(
              // WearShapeで囲むだけで、画面形状に応じたUIになる
              child: WearShape(
                builder: (context, shape, child) {
                  return const Text(
                    'Hello, Wear OS!',
                    style: TextStyle(color: Colors.white),
                  );
                },
              ),
            ),
          ),
        );
      }
    }
    

4.ビルドエラー解決

環境構築中にあったエラーです。AGP(Android Gradle Plugin)のバージョンアップに伴って発生したエラーのを残しておきます。

エラー1: AGPのバージョン不一致

  • エラー内容: Using compileSdk 35 requires Android Gradle Plugin (AGP) 8.1.0 or higher.

  • 原因: Flutterが要求するcompileSdkのバージョンと、プロジェクトに設定されているAGPのバージョンが合っていない。

  • 解決策: android/settings.gradle内のAGPバージョンを上げる。

    // android/settings.gradle
    plugins {
        // ...
        id "com.android.application" version "8.3.0" apply false // 7.3.0などから変更
        // ...
    }
    

エラー2: namespaceが指定されていない

  • エラー内容: Namespace not specified. Specify a namespace in the module's build file.

  • 原因: 新しいAGPでは、:wearのようなライブラリモジュールにもnamespaceの指定が必須になったため。

  • 解決策: android/build.gradleを修正し、すべてのサブプロジェクトに動的にnamespaceを設定する。

    // android/build.gradle
    allprojects {
        repositories {
            google()
            mavenCentral()
        }
        // Workaround for namespace issue
        afterEvaluate {
            if (project.plugins.hasPlugin('com.android.library')) {
                android {
                    if (namespace == null) {
                        namespace "${rootProject.name}.${project.name}"
                    }
                }
            }
        }
    }
    

エラー3: KotlinのJVMターゲットバージョン不一致

  • エラー内容: 'compileDebugJavaWithJavac' task (current target is 1.8) and 'compileDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.

  • 原因: JavaコンパイラとKotlinコンパイラが、それぞれ異なるバージョンのJavaをターゲットにしている。

  • 解決策: android/build.gradleを修正し、KotlinコンパイラのターゲットをJava 1.8に統一する。

    // android/build.gradle
    subprojects {
        project.buildDir = "${rootProject.buildDir}/${project.name}"
        // Add this block
        tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }
    

6. まとめ

Flutterでも思ったより簡単にWearOSアプリ開発が始められることが分かった。
今回は、UI周りを触ってみただけなので心拍数などの取得やスマホとの連携などもこれから挑戦してみたい。

Discussion