0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React Native with Expo:Androidアプリ開発の落とし穴と乗り越え方

Last updated at Posted at 2025-05-30

ExpoでAndroidアプリを動かすまでの果てしなき戦い:エラーの山を乗り越えて

React NativeとExpoを使って、念願のAndroidアプリ開発に着手!「npx expo run:android」とコマンドを叩けば、すぐにエミュレータが立ち上がってアプリが動くはず……。そう思っていた時期が私にもありました。しかし、目の前に立ちはだかったのは、予想をはるかに超えるエラーの壁でした。

「There was a problem loading the project.」から始まり、次々に現れる難題。まるで巨大なパズルを解くように、一つ一つエラーを潰していった記録です。


序章:プロジェクトが読み込めない!始まりの絶望

プロジェクトを立ち上げて最初に遭遇したのは、「There was a problem loading the project.」という、なんとも漠然としたエラーでした。具体的に何が悪いのかも分からず、まさに暗闇の中を手探りするような状態。

解決への道筋:
最初は途方に暮れましたが、このエラーはExpoプロジェクトの基本的な依存関係やNode.jsのバージョンに起因することが多いと判明。Node.jsのバージョン管理ツール(例えば nvmvolta)を使って、安定版のNode.js(今回の場合は推奨バージョン)を再インストールし、依存関係をクリアにするために rm -rf node_modulesnpm install (または yarn install) を実行。さらに expo start --clear でExpoのキャッシュもクリアすることで、プロジェクトは無事に読み込まれるようになりました。この一歩が、長い戦いの始まりでした。


第一章:Androidビルドの壁、ADBの不在

プロジェクトは読み込めるようになったものの、いざ「npx expo run:android」を実行すると、今度はAndroid関連のエラーが噴出。特に印象的だったのは「adb コマンドが見つからない」というもの。Android開発の根幹を支えるADB(Android Debug Bridge)が動いていないのですから、アプリがエミュレータに届くはずもありません。

解決への道筋:
この問題は、Android SDKのパスがシステムに正しく認識されていないことが原因でした。

  1. ANDROID_HOME 環境変数の設定: Android SDKがインストールされているディレクトリ(例: C:\Users\radga\AppData\Local\Android\Sdk)を指すよう、ANDROID_HOME 環境変数を設定しました。
  2. Path 環境変数への追加: ADBの実行ファイルがある platform-tools ディレクトリ(例: %ANDROID_HOME%\platform-tools)を Path 環境変数に追加しました。
  3. ターミナルの再起動: 環境変数の変更をシステムに認識させるため、必ず新しいターミナルを開き直しました。

これでADBが使えるようになり、一安心…と思ったのも束の間でした。


第二章:ビルドツールの破損とNinjaの失踪

ADBが動くようになったと思いきや、次は「Build-tool 35.0.0 is corrupted. Remove and install again using the SDK Manager.」というエラーと、「Could not find Ninja on PATH or in SDK CMake bin folders.」というエラーが連続して発生。どうやらAndroidのビルドツール自体に問題があるようです。

解決への道筋:
これらの問題はAndroid StudioのSDK Managerが鍵を握っていました。

  1. Build-Toolsの再インストール:
    SDK Managerの「SDK Tools」タブから「Android SDK Build-Tools 35.0.0」を一度アンインストールし、再度インストールし直しました。これにより、破損していた aapt.exe などのツールが正常な状態で再配置されました。
  2. CMakeとNinjaのインストール:
    同様にSDK Managerの「SDK Tools」タブで、「CMake」にチェックを入れてインストールしました。react-native-reanimated のようなネイティブモジュールをビルドする際に必要なNinjaは、通常CMakeの中に含まれているため、これで解決。LLDBは必須ではないと知り、いったん保留しました。

第三章:パスの長さ制限という落とし穴

ビルドツールを整備し、ようやくネイティブビルドが走り出したかと思えば、「ninja: error: mkdir(src/main/cpp/worklets/CMakeFiles/worklets.dir/C_/General/General/1_programming/3_tw-mokumoku/1_app/lifeline-expo-app): No such file or directory」というエラーに直面。長々と続くパスの中に奇妙な C_ という記述が見え、途方に暮れました。

解決への道筋:
これはWindows特有のパスの長さ制限や、特定のビルドツールが長いパスを正しく扱えない問題でした。

  1. プロジェクトの移動:
    思い切ってプロジェクトフォルダを、より短い、シンプルでスペースや日本語を含まないパス(例: C:\it\0_app\lifeline)に移動しました。
  2. キャッシュのクリアと再インストール:
    パス変更後、android ディレクトリで gradlew clean を実行し、node_modules を削除して npm install を再実行。そして expo start --clear でExpoキャッシュもクリアしました。

この「移動」という大胆な一手で、ついにビルドが最後まで走り切る光明が見えました。


第四章:最後の砦、インストールの障壁

ビルドは成功したものの、最終ステップのインストールでまさかのエラー。「INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package fyi.mk_mokumoku.app.lifeline signatures do not match previously installed version; ignoring!」と「INSTALL_FAILED_USER_RESTRICTED: Install canceled by user」という二段構えの攻撃を受けました。

解決への道筋:
これはビルドの問題ではなく、デバイス側の問題でした。

  1. 既存アプリのアンインストール:
    INSTALL_FAILED_UPDATE_INCOMPATIBLE は、以前インストールされていた(異なる署名を持つ)同じパッケージ名のアプリが残っているために発生します。エミュレータのアプリ一覧から対象のアプリをアンインストールするか、adb uninstall <パッケージ名> コマンドで強制的に削除しました。
  2. 「提供元不明のアプリのインストール」の許可:
    INSTALL_FAILED_USER_RESTRICTED は、Androidのセキュリティ機能によるものです。「設定」→「アプリと通知(またはセキュリティ)」→「特別なアプリアクセス」→「不明なアプリのインストール」と進み、ADBや関連するシステムプロセスからのインストールを許可する設定をオンにしました。

これらの設定変更後、再度 npx expo run:android を実行すると、ついに!アプリがエミュレータにインストールされ、無事に起動しました!


終わりに:エラーは成長の糧

「There was a problem loading the project.」から始まった長いエラーとの戦い。一つ一つのエラーメッセージを読み解き、適切な解決策を探し、試行錯誤を繰り返す日々でした。正直、心が折れそうになる瞬間も何度もありました。

しかし、この経験を通して、Android開発環境のセットアップ、Gradle、ADB、Nativeモジュールのビルドプロセス、Androidのセキュリティ設定に至るまで、深い理解を得ることができました。エラーは、単なる問題ではなく、知識を深めるための貴重な機会だったと今は感じています。

もし今、あなたが同じようなエラーの泥沼にハマっているなら、諦めないでください。一つずつ、着実に解決していけば、必ず道は開けます。この経験が、誰かのエラー解決の助けになれば幸いです。

この記事があなたのエンジニアキャリアの一助になれば幸いです。

もしこの記事が役に立ったと感じたら、ぜひ「♡」で教えてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?