facebook twitter hatena line google mixi email

Cocos2dx/プロジェクト実行android

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

androidのプロジェクト実行

androidの場合sdkのversionをあわせる

$ vi proj.android-studio/app/project.properties
$ vi cocos2d/cocos/platform/android/java/project.properties
$ vi proj.android/project.properties
target=android-25

以下のsdkのversionと合わせる

$ ls /Users/test1/Library/Android/sdk/platforms/*

プロジェクト実行

$ cocos run -p android -m debug -j 2

"問題が発生したため、[project]を終了します"のコンパイラエラー

Android NDK: WARNING: APP_PLATFORM android-24 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml

Application.mkに以下追加

APP_PLATFORM := android-9
$ locate Application.mk
cocos2d/plugin/protocols/proj.android/jni/Application.mk
cocos2d/tools/simulator/frameworks/runtime-src/proj.android/jni/Application.mk
proj.android/jni/Application.mk
proj.android-studio/app/jni/Application.mk

参考:http://stackoverflow.com/questions/15872254/android-ndk-warning-app-platform-android-9-is-larger-than-androidminsdkversio

Error running command, return code: 2.のエラー

cocos2dxが3.14.1で起こったのでcocos2dxを3.17に上げたら直った。

Android NDK: android-9 is unsupported. Using minimum supported version android-14.エラー

上記Application.mkのminimum supportedのandroid-9をandroid-14に変更してみる

Android NDK: WARNING: APP_PLATFORM android-14エラー

android-14が入ってないので、AndroidのSDK_Managerからandroid-14を入れる

error: undefined reference toなどでカスタムクラスがロードできてない場合

以下にカスタムクラスを追加する必要がある

proj.android/app/jni/Android.mk

androidプロジェクトを開いてのビルド

直接androidプロジェクトを開いてビルドしても以下エラーとなり実行できない java.lang.UnsatisfiedLinkError: Couldn't load MyGame from loader dalvik.system.PathClassLoader

↓コマンドで一度compileするとできた。

android-studioのprojだけをcompileする方法

v.3.17

$ cocos compile -p android 

v.3.14.1

$ cocos compile -p android --android-studio

以下エラーが出た場合

Android SDK toolsの25.3.0でbugがあるので25.3.0は避ける。

*************************************************************************
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-25"
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

apkインストール

端末確認

adb devices

apkインストール(cocosプロジェクトの下にbinができてるので)

adb install -r bin/debug/android/Helloworld-debug.apk

Successと出たら成功

設定ファイル

proj.android/gradle.properties

# Android SDK version that will be used as the compile project
PROP_COMPILE_SDK_VERSION=27

# Android SDK version that will be used as the earliest version of android this application can run on
PROP_MIN_SDK_VERSION=14

# Android SDK version that will be used as the latest version of android this application has been tested on
PROP_TARGET_SDK_VERSION=27

# Android Build Tools version that will be used as the compile project
PROP_BUILD_TOOLS_VERSION=27.0.1

gradleバージョン変更

$ vi proj.android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

apk起動

adb shell am start -n com.example.helloworld/org.cocos2dx.cpp.AppActivity

ビルドからapk起動まで一括で

cocos compile -p android --android-studio && adb install -r bin/debug/android/Helloworld-debug.apk && adb shell am start -n com.example.helloworld/org.cocos2dx.cpp.AppActivity

AndroidManifestに権限追加

proj.android-studio/app/AndroidManifest.xml

以下などをmanifestタグ内に追加する

   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Activityをカスタマイズしたい場合

proj.android-studio/app/src/org/cocos2dx/cpp/AppActivity.java

public class AppActivity extends Cocos2dxActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // ココらへんに差し込む
   }
   @Override
   protected void onStart() {
       super.onStart();
       // ココらへんに差し込む
   }
   @Override
   protected void onResume() {
       super.onResume();
       // ココらへんに差し込む
   }
   @Override
   protected void onPause() {
       super.onPause();
       // ココらへんに差し込む
   }
   @Override
   protected void onStop() {
       super.onStop();
       // ココらへんに差し込む
   }
   @Override
   protected void onDestroy() {
       super.onDestroy();
       // ココらへんに差し込む
   }
}

参考

Cocos2d-x 導入編-Mac開発環境構築について http://qiita.com/kazuhiro1128/items/73c39bfc450e7d0883af