◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-03-29中級

Antigravity×Unity/Flutter連携エラー解決法 — SDK設定からビルドエラーまで

Unity / Flutter で Antigravity を使うときの SDK 設定やビルドの詰まりを体系的に解決します。SDK 導入と初期設定、API 接続と認証、依存関係のエラー、iOS / Android 固有の問題、デバッグとログ出力の順に確認していきます。

antigravity464unity3flutterintegration4troubleshooting89sdk5

UnityやFlutterでAntichravityを利用しようとすると、SDK設定の複雑さやプラットフォーム固有の制約によって、多くの開発者が初期段階で躓きます。このガイドでは、SDK導入からビルド完了までの全てのステップで発生しうるエラーを体系的に解決します。

SDK導入と初期設定エラー

Antigravity SDKの導入は、プラットフォームごとに異なるアプローチが必要です。

Unity への SDK 導入

Unity での Antigravity SDK 導入は、Asset Store 経由かダイレクトダウンロード経由の2つの方法があります。

Asset Store の場合:

  1. Unity Editor を開く → Window > Asset Store
  2. 検索欄に「Antigravity SDK」と入力
  3. 「Import」ボタンをクリック
  4. インポート時に Assets/Plugins フォルダが作成されることを確認

ダイレクトダウンロード の場合:

  1. Antigravity 公式サイトから .unitypackage ファイルをダウンロード
  2. Unity Editor で Assets > Import Package > Custom Package...
  3. ダウンロードしたファイルを選択

初期設定エラー: API キーが認識されない

// 間違った設定例
AntigravityClient.Initialize("YOUR_API_KEY");
// ❌ エラー: API key not found

このエラーが発生した場合、以下を確認してください。

  1. API キーが YourApiKey (前後の空白なし)
  2. Editor Settings > Project Settings > Antigravity に設定が保存されているか確認
  3. Unity を再起動し、キャッシュをクリア: Edit > Clear All EditorPrefs (警告!)

正しい設定方法:

// 正しい設定例
using Antigravity.SDK;
 
public class AntigravityManager : MonoBehaviour
{
    void Start()
    {
        // PlayerPrefs 経由で API キーを設定
        var apiKey = PlayerPrefs.GetString("antigravity_api_key");
        AntigravityClient.Initialize(apiKey);
 
        // または Environment から読み込む
        var envKey = System.Environment.GetEnvironmentVariable("ANTIGRAVITY_API_KEY");
        AntigravityClient.Initialize(envKey);
    }
}

Flutter への SDK 導入

Flutter では pubspec.yaml に依存関係を追加します。

# pubspec.yaml の例
dependencies:
  flutter:
    sdk: flutter
  antigravity_sdk: ^1.2.0  # 最新版を確認
  http: ^0.13.0
  provider: ^6.0.0

導入後は flutter pub get を実行します。

よくあるエラー:

Error: Could not resolve the SDK path for antigravity_sdk

対処法:

  1. flutter clean を実行
  2. flutter pub get を実行
  3. それでも解決しない場合は、pubspec.lock を削除して再取得

API 接続と認証エラー

SDK の導入が完了しても、実際の API 接続時に認証エラーが発生することがあります。

Unity での認証エラー

// ❌ よくあるエラーコード
try
{
    var response = await AntigravityClient.Instance.CallAsync(new GenerateRequest
    {
        Prompt = "Hello Antigravity"
    });
}
catch (AuthenticationException ex)
{
    Debug.LogError($"Auth failed: {ex.Message}");
    // Response: 401 Unauthorized
}

この場合、以下を確認します。

  1. API キーの有効期限: ダッシュボードから確認
  2. API キーに対応する plan が active か確認
  3. リクエストヘッダに「Authorization: Bearer YOUR_API_KEY」が含まれているか

正しい実装:

public class AntigravityRequester : MonoBehaviour
{
    private AntigravityClient _client;
 
    void Awake()
    {
        _client = new AntigravityClient(new AntigravityConfig
        {
            ApiKey = PlayerPrefs.GetString("antigravity_api_key"),
            Timeout = 30000, // 30秒
            RetryCount = 3,
            RetryDelay = 1000
        });
    }
 
    public async Task<GenerateResponse> GenerateText(string prompt)
    {
        try
        {
            var request = new GenerateRequest
            {
                Prompt = prompt,
                MaxTokens = 1000,
                Temperature = 0.7f
            };
 
            var response = await _client.CallAsync(request);
            return response;
        }
        catch (AuthenticationException)
        {
            Debug.LogError("API key is invalid or expired");
            // API キー再取得フローをここに実装
            RefreshApiKey();
        }
        catch (RateLimitException)
        {
            Debug.LogWarning("Rate limit exceeded, waiting...");
            await Task.Delay(5000); // 5秒待機
        }
    }
 
    private void RefreshApiKey()
    {
        // サーバー経由で新しい API キーを取得
    }
}

Flutter での認証エラー

Flutter では認証情報を shared_preferences で管理するのが一般的です。

// lib/services/antigravity_service.dart
import 'package:antigravity_sdk/antigravity_sdk.dart';
import 'package:shared_preferences/shared_preferences.dart';
 
class AntigravityService {
  late AntigravityClient _client;
  late SharedPreferences _prefs;
 
  Future<void> initialize() async {
    _prefs = await SharedPreferences.getInstance();
    final apiKey = _prefs.getString('antigravity_api_key') ?? '';
 
    if (apiKey.isEmpty) {
      throw Exception('API key not found in SharedPreferences');
    }
 
    _client = AntigravityClient(
      apiKey: apiKey,
      timeout: Duration(seconds: 30),
    );
  }
 
  Future<String> generateText(String prompt) async {
    try {
      final response = await _client.generate(
        prompt: prompt,
        maxTokens: 1000,
        temperature: 0.7,
      );
      return response.text;
    } on AntigravityException catch (e) {
      if (e.code == 'AUTH_ERROR') {
        // API キー無効 → リフレッシュフローへ
        await _refreshApiKey();
        rethrow;
      } else if (e.code == 'RATE_LIMIT') {
        // レート制限 → リトライスケジューリング
        await Future.delayed(Duration(seconds: 5));
        return generateText(prompt);
      }
      rethrow;
    }
  }
 
  Future<void> _refreshApiKey() async {
    // バックエンド API を呼び出して新しいキーを取得
    // その後 SharedPreferences に保存
  }
}

ビルドエラーと依存関係の解決

ビルド段階で多くのエラーが発生します。特に iOS と Android で異なる対応が必要です。

iOS ビルドエラー

Xcode でビルドするときの典型的なエラー:

ld: library not found for -lAntigravity
clang: error: linker command failed with exit code 1

対処法:

  1. Pods を再インストール:

    cd ios
    rm -rf Pods Podfile.lock
    pod install --repo-update
    cd ..
  2. Xcode build cache をクリア:

    rm -rf ~/Library/Developer/Xcode/DerivedData
  3. それでもダメなら、Podfile を編集:

    # ios/Podfile
    target 'Runner' do
      pod 'AntigravitySDK', '~> 1.2.0'
     
      post_install do |installer|
        installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
            config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
              '$(inherited)',
              'ANTIGRAVITY_ENABLED=1'
            ]
          end
        end
      end
    end

Android ビルドエラー

Gradle 同期時に発生しやすいエラー:

Failed to resolve: com.antigravity:sdk:1.2.0

対処法:

  1. build.gradle を確認:

    // android/app/build.gradle
    dependencies {
        implementation 'com.antigravity:sdk:1.2.0'
        implementation 'com.google.code.gson:gson:2.8.9'  // 依存ライブラリ
    }
     
    repositories {
        google()
        mavenCentral()
        maven {
            url 'https://maven.antigravity.com/releases'  // 公式リポジトリ
        }
    }
  2. Gradle キャッシュをクリア:

    cd android && ./gradlew clean && cd ..
  3. マニフェストを確認 (Android 12+):

    <!-- android/app/src/main/AndroidManifest.xml -->
    <uses-permission android:name="android.permission.INTERNET" />
    <queries>
        <package android:name="com.antigravity.*" />
    </queries>

コード生成エラー (Kotlin Multiplatform)

KMP でビルドする場合、コード生成の失敗が多いです。

Error: Expected class declaration

原因と対処:

// 正しい構造
commonMain {
    dependencies {
        implementation("com.antigravity:sdk:1.2.0")
    }
}
 
androidMain {
    dependencies {
        implementation("androidx.appcompat:appcompat:1.6.1")
    }
}
 
iosMain {
    dependencies {
        implementation("com.antigravity:sdk-ios:1.2.0")
    }
}

プラットフォーム固有の問題 (iOS / Android)

iOS 14以降での App Tracking Transparency

Antigravity SDK が複数のドメインにアクセスする場合、ATT (App Tracking Transparency) の許可申請が必要になる場合があります。

// ios/Runner/Runner/AppDelegate.swift
import AppTrackingTransparency
 
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    if #available(iOS 14, *) {
      ATTrackingManager.requestTrackingAuthorization { status in
        // 許可結果を処理
      }
    }
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

Android のネットワークセキュリティ

Android 9 以上では、cleartext (非HTTPS) 通信がデフォルトで禁止されています。

<!-- android/app/src/main/res/xml/network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">api.antigravity.com</domain>
        <pin-set>
            <!-- Certificate pinning (optional) -->
        </pin-set>
    </domain-config>
</network-security-config>

AndroidManifest.xml で参照:

<!-- android/app/src/main/AndroidManifest.xml -->
<application
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
</application>

デバッグとログ出力

問題を特定するには、詳細なログ出力が必須です。

Unity でのロギング

// Assets/Scripts/AntigravityDebugger.cs
public class AntigravityDebugger : MonoBehaviour
{
    void Start()
    {
        AntigravityClient.EnableDebugLogging(true);
 
        // ネットワークトレースを有効化
        System.Net.ServicePointManager.ServerCertificateValidationCallback =
            (sender, cert, chain, sslPolicyErrors) =>
            {
                Debug.Log($"SSL Validation: {sslPolicyErrors}");
                return true; // 開発環境のみ
            };
    }
}

Flutter でのロギング

// lib/services/logger.dart
import 'package:logger/logger.dart';
 
final logger = Logger(
  printer: PrettyPrinter(
    methodCount: 2,
    errorMethodCount: 5,
  ),
);
 
// 使用例
logger.d('API Call: ${request.toJson()}');
logger.w('Rate limit warning');
logger.e('Authentication error', error: exception);

全体を振り返って

Unity と Flutter から Antigravity を連携する際のエラーは、正確には以下の3段階で発生します。(1) SDK 導入と API キー設定、(2) API 認証と接続、(3) ビルド時の依存関係解決。各段階で系統的にチェックリストを実行すれば、ほぼすべてのエラーを回避できます。

プラットフォーム固有の問題 (iOS の ATT、Android のネットワークセキュリティ) も含め、このガイドの実装パターンに従えば、スムーズなモバイル開発が実現します。さらに詳しい実装パターンは、Unity と Antigravity の高速開発ガイド も参照してください。


参考資料

SDK 統合とネイティブプラグイン開発の実務知識は、以下の書籍が参考になります。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

▣ アプリ開発2026-10-14
ドキュメントのないコードを仕様書に起こす前に、読ませる順番を fan-in で決めておく
ドキュメントのない既存コードをエージェントに読ませて仕様書にするとき、最初に渡すファイルをどう決めるか。import の被参照数(fan-in)とルート定義ファイルから「読ませる順番」を出す 36 行の Python と、77 ファイルの Next.js プロジェクトで測った割合をまとめます。
▣ アプリ開発2026-10-08
agy CLI をコンテナで動かす前に、擬似 agy で確かめておく 3 つの安全網
Antigravity CLI(agy)を Docker や Cloud Run のジョブから呼ぶ前に、インストーラーの取りこぼし・承認待ちの固まり・終了コード 0 の空振りを、擬似 agy で再現して潰します。公式 docs の記述と、手元で実行した結果だけを根拠に組み立てた手順です。
▣ アプリ開発2026-09-10
iOS 27 の配信日が決まってから、私が最初に grep したのは AGENTS.md でした
iOS 27 と iPadOS 27 の配信は9月14日です。版数の文字列はソースだけでなく、エージェントが読む設定ファイルにも残ります。両方を数えるスクリプトと、keyword 検索では拾えない一行の話を書き残します。