Flutterで作るWear OSアプリ開発ガイド 〜環境構築からよくあるビルドエラー解決法まで
Flutterで作るWear OSアプリ開発 〜環境構築からよくあるビルドエラー解決法まで〜
1. はじめに
Flutterを使って、Wear OS向けのスマートウォッチアプリを開発する魅力と、その基本的な流れを紹介する。
-
この記事で得られること:
- Wear OS開発のための環境構築手順
-
wear
パッケージを使った基本的なUI実装方法 - 開発中につまずきがちなビルドエラーとその解決策
- 簡単なサンプルアプリ(漢字表示アプリ)の実装イメージ
2. 開発環境のセットアップ
- FlutterとAndroid Studio: 最新版がインストールされていることを前提とする。
-
Wear OSエミュレータの作成:
- Android Studioの
Device Manager
を開く。 -
Create device
>Wear OS
カテゴリを選択。 -
Wear OS 4 (API 33)
など、目的のOSバージョンを選択してエミュレータを作成する
- Android Studioの
-
Flutterプロジェクトの作成:
-
flutter create wear_os_app
コマンドで新しいプロジェクトを作成する。
-
wear
パッケージの導入と基本
3. FlutterでWear OSアプリを開発するための必須パッケージwear
を紹介します。
-
pubspec.yaml
への追加:dependencies: flutter: sdk: flutter wear: ^1.1.0 # 2025年7月時点でのバージョン
-
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などから変更 // ... }
namespace
が指定されていない
エラー2: -
エラー内容:
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コンパイラのターゲットをJava1.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