旧. -開発日記-

〜とあるプログラマーのつぶやきや開発メモなど〜

アプリ紹介 「Wild Kids 〜ミルクしか信じない〜」

6ヶ月もブログ更新していなかったので久々に。

実は現在cocos2d-xを使ったゲームを開発しており、
このWild Kids以来になります。

Wild Kids 〜ミルクしか信じない〜

Wild Kids 〜ミルクしか信じない〜

  • Libra Studio, Inc.
  • ゲーム
  • 無料

こちらのアプリ、エンジニアに@very_tiredさんという
フリーランスの凄腕デベロッパーさんにお手伝いしてもらったものになります。

今回も一緒に制作しており、この夏くらいにリリースできたらなと考えてます(´・ω・`)

ちょっとした宣伝になっちゃいましたが、このWild Kidsもお子様も楽しめるような
ライトなゲームになってますので是非Playしてみてください♩

Google Play Services SDKを使った際のProGuard設定

超絶久々に備忘録として...。
先日Google Play Servicesを導入して、いざapkに吐き出そうとした時
見たこともないエラーがズラズラと。
ProGuardを使った場合なんですが。その時解決した方法をば。

proguard-project.txtに以下を記述

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

# google play services libディレクトリにあるproguard.txtをまんまもってくる
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

# Keep SafeParcelable value, needed for reflection. This is required to support backwards
# compatibility of some classes.
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

# Keep the names of classes/members we need for client functionality.
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

centOSにTomcatインストール

非常に古くさいタイトルですが、一応いつでも確認出来るように
メモメモ...。


JDKダウンロード

64bit版だったので、こちらをDL。
JDK

JDKインストール

サーバ上で以下を実行

rpm -ivh jdk-7u51-linux-x64.rpm


環境パス等設定

vi /etc/profile


Javaの環境は以上で完了、
次はTomcatのインストール。

Tomcatダウンロード

Tomcatのサイトに行き、Linux用のURLをコピーしてくる。
執筆時では7.0.52が最初に目に入ったのでこれをDL。

wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz

ダウンロードが完了したら、展開しリネームを。

tar zxvf apache-tomcat-7.0.52.tar.gz
mv apache-tomcat-7.0.52.tar.gz /usr/local/tomcat


設定/起動

vi /etc/profile

JDKの時同様、最後の行に移動し

export CATALINA_HOME=/usr/local/tomcat

実行は以下のshをたたけばTomcatが起動します。

/usr/local/tomcat/bin/start.sh


おしまい。

VirtualBoxのCentOSにMacからsshで接続するまで

VirtualBoxを使って仮想サーバーをたてる

Macからssh接続を行う。

までを簡単に。

VirtualBoxは最初にインストールした時点でNATが適用となっているため、
今回はMacからVirtualBoxに繋ぐための設定を行います。
※なおこちらではCentOSを使ってますが、
事前にVirtualBoxにインストール済みということで



VirtualBoxのメニュー->環境設定->上部タブのネットワークを選択->
ホストオンリーネットワークを選択し、右の「+」を押してvboxnet0を追加

f:id:librastudio:20140228182324p:plain



■作成した仮想マシン上で右クリック->設定->上部タブのネットワークを選択->
アダプター1を選び、割り当てを"ホストオンリーアダプター"に
(名前は自動でvboxnet0に)

f:id:librastudio:20140227162029p:plain



■ゲストCentOSにて、eth0の設定を変更してやる

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=192.168.56.10 //CentOS側は192.168.56.xx
NETMASK=255.255.255.0
GATEWAY=192.168.56.1 //ホストOSのデフォルトのIPアドレス


■設定をかえたらMacのターミナルから

$ ssh root@192.168.56.10


Mac->VirtualBoxへの接続はこれでOK
なおVirtualBoxCentOS上でネットワークを使うなら
アダプター2で"ネットワークを有効化"にチェックをいれ、NATを選択。



外部ライブラリの読み込み設定方法(Google Maps APIを例に)

久々にブログのほう書きます。
Eclipseでは散々やってきたけど、IDEAのほうでいざやろうとしたら
異常に手間取って危うく諦めるところだったので、忘れないように
メモがてら書き書き...

まずIDEAを起動したら、「Create New Project」
プロジェクト本体を作成します。

注意するのがここで指定するSDKの部分はGoogle APIs」でないといけません。
いつも通りAndroid 4.x Platformとかしたら動かないですよー。

f:id:librastudio:20140129115303p:plain


  • Support Library の追加


起動しましたら、今度は「Project Structure」を開き左項目から「Libraries」を選択、上の「+」を押してnew Project LibraryでJavaを選びます。

あとはandroid-support-v4.jarまでのパスをたどってやって、
決定をするとどのモジュールにそれを追加するか聞かれる画面がでるので
そのまま先ほどの本体となるモジュールを選択します。
f:id:librastudio:20140129120112p:plain

※モジュールは自動で表示されるので追加したいとこを選択してやります
f:id:librastudio:20140129120123p:plain



次に細かい詳細ははしょりますが、Google Maps Android API v2は
Google Play Service APIの一つとして配布されているため、
このライブラリを参照してやる必要があります。

同じく「Project Structure」左側項目から「Module」を選択。
先ほどと同じく「+」Import Moduleを選択し、
google-play-services_libがおいてあるパスまでを指定してやります。


f:id:librastudio:20140129121726p:plain
これでインポート完了!


f:id:librastudio:20140129123520p:plain
ちゃんとインポートできていますね

最後に右項目「Libraries」にうつって、google-play-services
追加されているので、右クリック->Add to Modules...
本体のモジュールに追加してやります。

f:id:librastudio:20140129123747p:plain


そして最後仕上げは「Module」から本体モジュールを選択し、
右側タブ「Dependencies」を選択、google-play-services_libを追加してやります。
下の「+」からModule Dependencyを選択し上記を選んでやればOK。

f:id:librastudio:20140129124835p:plain



では自身で取得したMaps APIキーを追記してやってプロジェクトを作成します。

main.xmlは適当に以下でやってみました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:map="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
        >
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/button1"
                android:layout_weight="1">
        </Button>
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/button2"
                android:layout_weight="1">
        </Button>
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/button3"
                android:layout_weight="1">
        </Button>
    </LinearLayout>
    <fragment
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:name="com.google.android.gms.maps.SupportMapFragment"/>
</LinearLayout>

Activityのほうは下記で。

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;

public class MyActivity extends FragmentActivity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

f:id:librastudio:20140129144423p:plain
ちゃんと表示された!




※こちらも忘れそうなので併せてメモ。
Genymotionで実行する際、Maps API等使う時に
失敗するので、Project Structureで各モジュールで
libのパスを空にしてやる。一時的に...。

でないと
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE on device using intellij
こんなのが出る...。
詳しくは、ココ