質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3799閲覧

cocos2d-xで作成したプログラムがAndroidのエミュレータ及び実機でビルドできません

takahoge

総合スコア9

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2017/06/20 11:25

編集2017/06/20 11:42

###前提・実現したいこと
cocos2d-xを利用してスマートフォンゲームを作っています。
Macbook Pro のターミナル上で cocos new コマンドでHelloWorldプログラムを作成し、Android Studio でビルドしたところ、エミュレータ上で、アプリケーション起動後すぐにアプリが停止してしまい、以下のようなエラーメッセージがターミナルに出力されてしまいました。
また、実機でもビルドしてみたものの、全く同じ状態になり、Android Device Monitor の LogCat で以下のような出力がありました(抜粋)。

###発生している問題・エラーメッセージ

以下、ターミナルでの出力____

MacBook-Pro:HelloCocos4 user$ cocos run -p android --android-studio
Building mode: debug
Using Android Studio project : /Users/user/cocos2d-xProjects/HelloCocos4/proj.android-studio
running: '/Users/user/Library/Android/sdk/tools/android update project -t android-13 -p /Users/user/cocos2d-xProjects/HelloCocos4/proj.android-studio/app'


The "android" command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager


Invalid or unsupported command "update project -t android-13 -p /Users/user/cocos2d-xProjects/HelloCocos/proj.android-studio/app"

Supported commands are:
android list target
android list avd
android list device
android create avd
android move avd
android delete avd
android list sdk
android update sdk
Error running command, return code: 2.

____以下、Android Device Monitor での LogCat 出力(抜粋)
06-20 20:06:59.038: E/AndroidRuntime(6900): FATAL EXCEPTION: main
06-20 20:06:59.038: E/AndroidRuntime(6900): Process: com.mycompany.HelloCocos4, PID: 6900
06-20 20:06:59.038: E/AndroidRuntime(6900): java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mycompany.HelloCocos4-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.HelloCocos4-1/lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "libMyGame.so"
06-20 20:06:59.038: E/AndroidRuntime(6900): at java.lang.Runtime.loadLibrary0(Runtime.java:984)
06-20 20:06:59.038: E/AndroidRuntime(6900): at java.lang.System.loadLibrary(System.java:1562)
06-20 20:06:59.038: E/AndroidRuntime(6900): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:248)
06-20 20:06:59.038: E/AndroidRuntime(6900): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:264)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.Activity.performCreate(Activity.java:6682)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.ActivityThread.-wrap12(ActivityThread.java)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.os.Handler.dispatchMessage(Handler.java:102)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.os.Looper.loop(Looper.java:154)
06-20 20:06:59.038: E/AndroidRuntime(6900): at android.app.ActivityThread.main(ActivityThread.java:6121)
06-20 20:06:59.038: E/AndroidRuntime(6900): at java.lang.reflect.Method.invoke(Native Method)
06-20 20:06:59.038: E/AndroidRuntime(6900): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
06-20 20:06:59.038: E/AndroidRuntime(6900): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

###該当のソースコード
C++
ソースコードは、cocos コマンドで作成した初期状態の HelloWorld のままです。

###試したこと
Android NDK のバージョンが新しすぎると良くないとのことでしたので、Android NDK r9d をダウンロードしてパスを指定してみましたが変化なしでした。
その他、ネットや書籍で調べて得た方法を片っ端から試してみても、全く解決せず、打つ手なしの状態です。
ちなみに、Xcode では、問題なくビルドできています。

###補足情報(言語/FW/ツール等のバージョンなど)
cocos2d-xのバージョンは3.14です。
文章読みにくくてすいません。解決方法に何か心当たりのある方、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

原因は、Android SDKの更新により、コマンドラインでのビルドが出来なくなったことです。
エラーメッセージにもその事が書かれています。

The "android" command is deprecated. For manual SDK, AVD, and project management, please use Android Studio. For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager

Andoid SDKのバージョンを古くする事で回避できますが、根本的な解決にはなりません。

cocos2d-xの本体をv3.15.1で環境を作り直し、cocos newでプロジェクトを新規に作り直しましょう。
v3.15.1では、Android Studioのみでビルドできるようにプロジェクト設定が変更されています。
またNDKのバージョンはr14bが推奨です。
Android Studioでビルドする都合上、NDKは<ANDROID_SDK_ROOT>/ndk-bundle/に配置されている必要があります。
ここにインストールされていない場合は、Android StudioからNDKのダウンロード&インストールが出来るので気にしなくても良いかもしれません。

投稿2017/06/21 01:34

編集2017/06/21 01:44
mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takahoge

2017/06/21 13:44

回答ありがとうございます! 先ほど、cocos2d-x v3.15.1 をダウンロードし、ターミナル上で setup.py の実行及び source .bash_profile コマンドで環境設定を行いました。その後、新規プロジェクトを作成し、Android Studio でビルドしたところ、ビルド後にAndroid Studio 上で、以下のようなエラーが出力されてしまいました。 /Users/user/cocos2d-xProjects/HelloCocos6/cocos2d/cocos/platform/android/jni/ProcessCpuTracker.cpp Error:(69, 54) error: 'read' was not declared in this scope Error:(70, 13) error: 'close' was not declared in this scope Error:(69, 54) error: 'read' was not declared in this scope Error:(70, 13) error: 'close' was not declared in this scope ソースコードの該当箇所は以下です。 ______________ProcessCpuTracker.cpp________________ #ifdef ANDROID int fd = open("/proc/stat", O_RDONLY); if (fd < 0) { return cpuInfos; } const int len = read(fd, buffer, sizeof(buffer)-1); // この部分のreadがエラーです close(fd); // この部分のcloseがエラーです。 if (len < 0) { LOGD("Unable to open process fd=%d", fd); return cpuInfos; } buffer[len] = 0; #else この場合、何か初期状態の Hello World から修正しなければならないのでしょうか? もし何か思い当たることがありましたら、ご教授お願いできませんでしょうか。 よろしくお願いします。
takahoge

2017/06/21 22:40

SDK マネージャーで NDK のバージョンを確認したところ、バージョンが15となっていたため、NDK r14b をダウンロードし、Library/Android/sdk/ndk-bundle と置き換えたところ、無事起動することができました。本当に助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問