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

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

Unity と Flutter から Antigravity API を連携するときの SDK 設定、認証、ビルドエラーを完全解決。iOS/Android 両プラットフォーム対応。

antigravity435unity3flutterintegration4troubleshooting88sdk5

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-06-19
Managed Agents API でバックグラウンドタスクを安全に走らせる設計
Antigravity 2.0 の Managed Agents API は、単一の API 呼び出しで隔離された Linux 環境にエージェントを起動し、推論・ツール実行・コード実行までを任せられます。便利な反面、放置すると暴走やコスト超過を招きます。バックグラウンド常駐タスクとして安全に運用する設計を考えます。
アプリ開発2026-05-03
Antigravityで『uv add transformers』が通らない時の見落としやすい原因と対処法
Antigravity上のPythonプロジェクトでuv add transformersが失敗する、あるいは追加後もImportErrorになる時に確認すべきポイントを、実際に詰まった順序で整理します。
アプリ開発2026-04-28
Antigravity でホットリロード(HMR)が効かない問題の切り分けと修正手順
Antigravity で HMR が効かない・反映されない問題を、ファイルウォッチャー/ポート/ビルドツール/エディタ設定の4領域に分けて切り分ける実践的な診断手順をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →