気ままなDevLog

webとかプログラミングについての雑記帳

cocos2d-xのAndroidゲームを動かすeclipseの初期設定

初期設定

macにて

eclipse起動

設定画面を開く メニューバーのEclipse > 環境設定(Preference)

C/C++ > Build > Environment を開く

右側にある「Add」を押す New Variableウィンドウにて、下記NDK_ROOTを環境変数として追加する

  • name: NDK_ROOT
  • value: /Applications/Android/ndk
Androidプロジェクトを開く

File > New > Other Android Project from Existing Codeを選択

プロジェクトフォルダを選択し、出てきた一覧から次の2つを選択

「Finish」をクリックするとビルドが始まる

Android エミュレーターを作成する

Window > Android Virtual Device Manager を選択

デバイス一覧から任意のデバイスを選択して、Create ADVをクリック

初期設定ウィンドウにて各種設定を入力 Emulation Options: の項目にて、Use Host GPUにチェックを入れる。

「OK」をクリックすればエミュレーターが作成される。

プロジェクトを起動する

レフトペインから該当のプロジェクトフォルダを選択 > Run As > Android Application を選択

ここで以下のようなエラーが出た

Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;

ここに様々な解決策が書いてあって android - Unable to execute dex: Multiple dex files define Lcom/myapp/R$array; - Stack Overflow

私の場合は、以下で解決 click on project -> Build path -> configure build path -> Libraries -> Android dependencies を選択して、remove

その後、(プロジェクトのCleanはしないで)Run As > Android Applicationを実行したら動きました。

cocos2d-xで新しいプロジェクトを作成する

macでcocos2d-xの新しいプロジェクトを作成する

コマンドの構成は次の通り

$ cocos new {プロジェクト名} -p {パッケージ名} -l {言語} -d {ディレクトリ}

実行してみる

$ cocos new HelloCocos -p com.katsat.HelloCocos -l cpp -d ~/Desctop
Running command: new
> Copy template into /Users/myuser/Desktop/HelloCocos
> Copying cocos2d-x files...
> Rename project name from 'HelloCpp' to 'HelloCocos'
> Replace the project name from 'HelloCpp' to 'HelloCocos'
> Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos'
> Replace the mac bundle id from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos'
> Replace the ios bundle id from 'org.cocos2dx.hellocpp' to 'com.katsat.HelloCocos'

上記の場合、デスクトップにプロジェクトフォルダが出来上がっている

cocos2d-x開発環境構築メモ

以下、Macにてcocos2d-xの開発環境を作ったときのメモ

Command line Toolsをインストールする

ターミナルを立ち上げ

$ xcode-select --install

Android版の開発を行う場合は別途javaが必要 Macの場合、次のコマンドで自動的にセットアップが開始されるが、すでに完了している場合は以下のようにバージョン番号が表示される。

$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

今回は統合開発環境eclipse + ADTを採用 eclipseをダウンロード、インストールする

Installing the Eclipse Plugin | Android Developers

Android NDKのインストール cocos2d-xはAndroid上でC++を動かすのにNDKの導入が必要 現時点でcocos2d-xから最新版NDKは利用出来ないそうなので下記URLからr9dをダウンロード

https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2

解凍したフォルダを/Application/Android/配下に移動(※任意の場所)

Apache ANTの導入 cocos2d-xはAntを利用して簡単にビルドが行えるように設計されている 以下ページからzipをダウンロード Apache Ant - Binary Distributions 解凍したフォルダを/Application/Android/配下に移動(※任意の場所)

環境変数の設定 ~/.bash_profileに以下追記

export ANDROID_SDK_ROOT=/Applications/Android/android-sdk-macosx
export NDK_ROOT=/Applications/Android/android-ndk-r9d
export AND_ROOT=/Applications/Android/apache-ant-1.9.4

読み込み

$ source ~/.bash_login

Android SDKの導入 eclipseを起動し、Android SDK Managerを起動 Toolsと必要なバージョンのAndroid APIをインストールする。

cocos2d-xのインストール cocos2d-xのサイトから最新版をダウンロードする

Download | Cocos2d-x: World's #1 Open Source Game Development Platform

zipを解凍し、ホームディレクトリ直下にcocos-2d-xという名前で配置

cocos-2d-xが正しくNDK、SDK、ANTの場所を見つけられているか確認

$ cd cocos-2d-x
$ ./setup.py

Setting up cocos2d-x...
->Check environment variable COCOS_CONSOLE_ROOT
  ->Search for environment variable COCOS_CONSOLE_ROOT...
    ->COCOS_CONSOLE_ROOT is found : /Users/katsuyuki/cocos2d-x/tools/cocos2d-console/bin

->Check environment variable COCOS_X_ROOT
  ->Search for environment variable COCOS_X_ROOT...
    ->COCOS_X_ROOT is found : /Users/katsuyuki/cocos2d-x

->Check environment variable COCOS_TEMPLATES_ROOT
  ->Search for environment variable COCOS_TEMPLATES_ROOT...
    ->COCOS_TEMPLATES_ROOT is found : /Users/katsuyuki/cocos2d-x/templates

->Configuration for Android platform only, you can also skip and manually edit "/Users/katsuyuki/.bash_profile"

->Check environment variable NDK_ROOT
  ->Search for environment variable NDK_ROOT...
    ->NDK_ROOT is found : /Applications/Android/android-ndk-r9d

->Check environment variable ANDROID_SDK_ROOT
  ->Search for environment variable ANDROID_SDK_ROOT...
    ->ANDROID_SDK_ROOT is found : /Applications/Android/android-sdk-macosx

->Check environment variable ANT_ROOT
  ->Search for environment variable ANT_ROOT...
    ->ANT_ROOT is found : /Applications/Android/apache-ant-1.9.4

cocosコマンドを実行してみる

$ cocos
/Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py 1.4 - cocos console: A command line tool for cocos2d-x

Available commands:
    run           Compiles & deploy project and then runs it on the target
    luacompile    minifies and/or compiles lua files
    deploy        Deploy a project to the target
    compile       Compiles the current project to binary
    new           Creates a new project
    jscompile     minifies and/or compiles js files

Available arguments:
    -h, --help  Show this help information
    -v, --version   Show the version of this command tool

Example:
    /Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py new --help
    /Users/myuser/cocos2d-x/tools/cocos2d-console/bin/cocos.py run --help

これにて完了

Androidアプリ App Widget ウィジェットの作り方簡単まとめ

Androidウィジェットを開発するのに参考になるページ
ほとんどのブログが基本的なことばかり書いているところここは非常に実践的な実装での解説がされています。
ただ、Android 1.5 時代のコードなのでサンプルを実行しても動かない?


Androidのホーム画面用App Widgetを作成する
http://japan.internet.com/column/developer/20091030/26.html

AndroidのApp Widgetでユーザー操作を処理する
http://japan.internet.com/developer/20091127/26.html

「Your project contains error(s)〜」エラーの解決法

家で開発してたAndroidアプリのソースコードを職場のeclipseにコピーしたときにこのエラーに陥ったときのメモ。


Androidプロジェクトを実行したとき次のアラートがポップアップしました。

「Your project contains error(s),please fix them begore running your application」

ググッてみるとプロジェクトをクリーンすると良いと書いてあります。
androidプロジェクト実行時のエラー


それでも直らないので更に検索すると、クリーンした後、ソースをいじってビルドすると良いと書いてある。

android+eclipseでプロジェクトだけにXがつき、クリーンしても消えない場合



それでもダメ、eclipseの「問題」ビューを見ると

「Error generating final archive: Debug certificate expired on yy/mm/dd HH:ii!」

てのが出てた。調べるとdebug.keystoreの期限切れということがわかった。
Androidの「Debug certificate expired」エラーの対処方法



同サイトにキーストアの生成方法も書いてあったのでそれを参考に生成
Androidのデバッグ用キーストアとキーを生成する方法


生成したファイルを既存のものに上書きして、eclipse再起動します。
それでもプロジェクトに付いた「x」は消えてないので、
再度上記の「クリーン」と「ビルド」をやったら直りました!

Capistranoでdeploy時にtrunkかtagを選べるようにする

こちらに良い方法が書いてありました。
Paul Gross's Blog - Deploying trunk or tags with capistrano

set :repository_root, "http://www.example.com/svn/myproject" 
set(:tag) { Capistrano::CLI.ui.ask("Tag to deploy (or type 'trunk' to deploy from trunk): ") }
set(:repository) { (tag == "trunk") ? "#{repository_root}/trunk" : "#{repository_root}/tags/#{tag}" }

cap deployを実行するとデプロイ元を聞いてくるようになるので、
"trunk"や任意のタグ名を入力することで自在に選択できて便利。

シェルでqmailを使ってメール送信する

#!/bin/bash

# To
MAIL_TO="webmaster@hoge.com"

# From
MAIL_FROM="alert@hoge.com"

# Subject
MAIL_TITLE="subject"

# Body
MAIL_BODY="honbun"

(echo -e To: $MAIL_TO; echo -e Subject: $MAIL_TITLE; echo -e $MAIL_BODY;) | /var/qmail/bin/qmail-inject -f $MAIL_FROM