2013年06月14日

Apportable - Publishing to Android Stores

Objective-C で書かれたコードをそのまま Android に移植できるという SDK のドキュメントを直訳してみました。 オリジナルは、こちらになります。なお、apportableさんの許諾はいただいております。

Publishing to Android Stores

あなたのアプリのデバッグビルドが済んだら、あなたの作品を数百万人の Android ユーザと共有できたも同然です! ただし最初に気をつける必要のあることが少しあります。

Release builds

シンボルをストリップしたリリースモードビルドを作るためには、 BUILD 環境変数がコマンドライン上で以下のように設定される必要があります:

BUILD=release apportable load

こうすることでパフォーマンスは改善されますが、デバッグできなくなります。 ( BUILD=staging を使うのはリリースするためのビルドのようでありながら、まだデバッグ可能にした状態で何らかのテストをしたいときとなります。)

Release keys

Apportable SDK によって自動的に生成され、あなたの ~/.android フォルダに格納されるデフォルトキーは、App Storeへのリリースをパブリッシュするのには使うべきではありません。 以下のコマンドを使ってリリースキーを生成して下さい。

keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
    -keysize 2048 -validity 10000

リリース用のキーストアを使ってビルドするために確認して欲しいのは、 ANDROID_KEYSTORE 環境変数がリリース用のキーストアへのパスを指していることと、 ANDROID_KEYSTORE_PASS があなたが使ったキーストアのパスワードに設定されていることです。 同じく BUILD を "release" に設定するのを忘れないで下さい。 それらは以下のようになるでしょう:

BUILD=release ANDROID_KEYSTORE=release.keystore \
    ANDROID_KEYSTORE_PASS=mypassword apportable build

あなたがアップロードするのに必要なリリース用の APK は、 ~/.apportable/SDK/ に置かれ、正確なパスはコマンドライン上に表示されるでしょう。

確認して欲しいのは、あなたのリリース用のキーストアファイルが安全な場所に格納されているかどうかです。 我々はあなたのために復活させることはできず、もし紛失した場合、あなたのアプリをアップデートできなくなってしまうでしょう。

Improving performance

もし ARMv7a NEON 命令セットをサポートするデバイス上のパフォーマンスを改善して欲しいなら、我々に連絡して下さい

Large installers

もしあなたの APK が 50MB を超える場合には、 Google Play にサブミットするために拡張ファイルが必要です。

完全な SDK は、 Google Play 拡張ファイルビルドが実行可能です。

Requirements:

  • Google Play パブリッシング用アカウント
  • デフォルトで LICENSED 応答を受け取るためにコンフィグされた Google Play テスト用アカウント
  • Android デバイス、好ましくは最新の Android、 SDカードをサポートしていればインストールされた SDカード
  • SDK
  • ビルドするアプリ
  • もしあなたのデバイスが MicroSDカードスロットを有しているなら、 MicroSDカード

Collect the data you need

SIGNING_PUBKEY

Google はこれをライセンスキーとして呼び、 Google Play パブリッシャコンソール上で "YOUR LICENSE KEY FOR THIS APPLICATION" を探します。

ANDROID_KEYSTORE

ANDROID_KEYSTORE_PASS

あなたはアプリを割り当てるためのキーストアを必要とします、詳細は http://docs.apportable.com/publishing.html#release-keys (訳注:オリジナルはこちら)を参照して下さい。

Workaround an SDK bug

SDK のいくつかのバージョンにはバグがあり、あなたは 'expansion_files' を configuration.json 中の FEATURES リストに追加する必要があるかもしれません。

Build the app

$ cd dir-of-app

$ ANDROID_KEYSTORE=/full/path/to/NameOfApp.keystore ANDROID_KEYSTORE_PASS=somepassword BUILD=release SIGNING_PUBKEY=XXXXX EXPANSION_FILES=yes EXPANSION_FILES_BUNDLE=yes apportable

Get the APK and OBB file

Google Play パブリッシャコンソールは、 OBB ファイルとして拡張ファイルを参照するでしょう。 Apportable は現在、主な拡張ファイルのみをサポートしています。

APK と OBB は、 ~/.apportable/SDK/Build/android-armeabi-release/NameOfApp/ に配置されます。

Plug in your test device

$ adb devices

アタッチされるデバイスのリスト

0ffd24a42a141eea device

Test by Side-Loading

$ adb install .apportable/SDK/Build/android-armeabi-release/NameOfApp/NameOfApp-release.apk

$ adb push .apportable/SDK/Build/android-armeabi-release/NameOfApp/main.1374785975.com.yourcompany.NameOfApp.obb /mnt/shell/emulated/obb/com.yourcompany.NameOfApp/main.1374785975.com.yourcompany.NameOfApp.obb

これであなたはアプリを起動して実行することができるはずです。

もしあなたが以前の古い Android デバイスを持っているなら、 OBB ファイルパスは /storage/sdcard0/Android/obb/ か /mnt/sdcard/Android/obb/ から始まるかもしれません。

もしあなたのデバイスは SDカードスロットを有しているなら、 SDカードが要求されます。

Test by loading from Google Play

まず最初に、設定からアプリを終了あるいは強制終了し、デバイスから OBB ファイルを削除します。

$ adb shell rm /mnt/shell/emulated/obb/com.yourcompany.NameOfApp/main.1374785975.com.yourcompany.NameOfApp.obb

あなたの APK と OBB ファイルを Google Play パブリッシャコンソールじょうにアップロードします。ステップは、通常の APK と同じですが、 APK をアップロードした後に直接拡張ファイルをアップロードすることもできる点が異なります。

Google Play に何かするためのいくばくかの時間を与えます。ときに、拡張ファイルを有効するのに 1-2時間を要することもあります。

デバイス上のテスト用 Google Play ユーザにとって、 Google Play からポジティブなライセンスチェック応答を受け取ることは、非常に重要です。 Google Play パブリッシャコンソール上で、ユーザがリスト化されたテスト用アカウントであることをチェックし、デフォルト応答が LICENSED であることをチェックします。拡張ファイルはそうしなければ配布されないでしょう。

アプリを再起動し、 Google Play からダウンロードして入手した拡張ファイルを見てみます。

Analytics

もしクラッシュレポートや利用データを見たいようであれば、そのセットアップを支援するにあたっては、我々に連絡して下さい

App Icon

Info.plist から抽出するデフォルトのアイコンは、おそらく十分な高解像度とはないっていないでしょう。 お勧めするのは、configuration.json を編集して、"ICON" に少なくとも 128 x 128 のサイズとなるアイコンファイルへのパスを設定することです。 もっとも大きい推奨サイズは 400 x 400 で、特に Kindle Fire でバイス向けにビルドするときになります。

Screenshots

ほとんどのアプリマーケットは、あなたのアプリをハイライトさせるためのスクリーンショットか動画を要求します。スクリーンショットを撮るためには、 apportable screenshot を使って下さい。

Google Play GCM Setup

Google API で以下を実行して下さい:

  1. 新しいアプリケーションを API コンソール内で作成して下さい。
  2. GCM をあなたの新しく作成されたアプリに対して有効にして下さい。
    1. 左から Services を選んで下さい。
    2. Google Cloud Messaging にスクロールダウンして、トグルを ON にして下さい。
    3. サービス規約に同意して下さい。
  3. API キーを作成して下さい。
    1. 左にある API Access を選んで下さい。
    2. Create a new server key をクリックして下さい。
    3. Create をクリックして下さい(要求されているフィールドを空白のままにすることができます)。
    4. API キーについて注意して欲しいのは、これは Google Play Developer Console に入っているということです。

Google Play Developer コンソールで以下を実行して下さい。

  1. あなたのアプリにナビゲートして下さい。
  2. Services & APIs を選んで下さい。
  3. “Link another Sender ID”を選んで下さい。
  4. 上記のステップ3であなたが作成した API キーを入力して下さい。
  5. あなたの GCM Sender ID が “Linked Sender IDs” ヘッダの下に現れるでしょう。これは、あなたが configuration.json の中で C2DM_SENDER として使うことになるキーです。

あなたの .approj ディレクトリの中のあなたの configuration.json ファイルのコンフィグレーションセクションにおいて、以下を含めます:

"C2DM_SENDER": "gcm:",

そして、 “c2dm_receive” を機能リストに追加して下さい。

我々の機能は現時点で c2dm_receive と名付けられていますが、 GCM サービスによって戻されます。

確認して欲しいのは、あなたが、 application:didFinishLaunchingWithOptions: メソッドの中であなたのアプリケーションの AppDelegate におけるリモート通知のために登録しているかということです:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert];

そのコールがなされると、我々は GCM サービスに登録し、さらに GCM がデバイストークンを返すと、我々は UIApplicationDelegate メソッドの application:didRegisterForRemoteNotificationsWithDeviceToken: を、あなたがデバイスにリモート通知を送るために必要とされるトークンと共にコールします。

あなたは Apportable プラットフォーム上でリモート通知のための登録のサンプルを見ることができます。

Apportable プラットフォーム上で、我々は以下のようにフォーマットされた GCM に送られる JSON データを期待します:アプリに送られる JSON ペイロードデータは、以下のようにフォーマットされているべきです:

{
    "data": {
        "payload": {
            "aps": {
                "body": "hello there!",
                "alert": "WINNER"
            },
            "coins": "1"
        }
    },
    "registration_ids": [
        "Your device gcm registration key"
    ]
}

ペイロード辞書がある場所は、 APN を使って送られるのと同じ辞書です。それは、少なくとも alert" と "body" キーを含む辞書を伴った "aps" キーを含まなければなりません。

もしあなたがあなたのアプリ上で GCM のあなたの実装をテストしたければ、あなたは以下の curl コマンドを使うことができます:

curl --header "Authorization: key=Your_server_API_key_from_step_3_of_APIs_Console_setup" -X POST -H "Content-Type: application/json" -d '{ "data": {"payload": {"aps": {"body": "hello there!", "alert": "WINNER" }, "some_extra_key": "+1"} },"registration_ids": [ "Your device ID that is sent to the application:didRegisterForRemoteNotifications method" ] }'
https://android.googleapis.com/gcm/send

追加リソース:http://developer.android.com/google/gcm/gs.html

Google Games Services

デベロッパコンソール上のステップ:

  1. あなたのデベロッパコンソールにてテストアプリのリストをセットアップします。
  2. セットアップされたら、リリースキーを割り当てられた apk をアップロードします。
  3. (左手のメニューにて) Game Services の中の新しいゲームをセットアップします。
  4. デベロッパコンソールにてあなたの作成したあなたの Android アプリをリンクします。
  5. あなたのゲームに対して左手にあるメニューにて "Linked Apps" を選びます。
  6. あなたのアプリ識別子を入力します。
  7. "Save and Continue" をクリックします。
  8. "Authorize your app now" をクリックします。
  9. "Continue" を選びます(あなたはあとで内容を埋めることができます)。
  10. コマンドラインに戻り、アップロードされる apk を割り当てるために使われるあなたのキーの SHA1 を入手するために以下のコマンドを実行します。
    keytool -list -v -keystore
  11. SHA1 を与えられたフィールドにコピーし、 "Create Client" をクリックします。
  12. ゲームの識別子を保存します -- それはゲーム名の隣のヘッダの中に置かれており(それは12桁の数字です)、あなたは後でそれを必要とします。

コードへの反映:

  1. configuration.json にて確認して欲しいのは、依存関係により GameKitPlus を追加することと、 GameKit 依存性を取り除くということです。
  2. apportable ディレクトリにて、以下のように見えるはずの ids.xml と名付られたファイルを res/values の中に追加します。
    <resources>
        <string name="app_id">12345678901</string>
    </resources>
    
  3. 文字列をあなたのゲームの識別子に置き換えます。
  4. 以下のように見えるはずの manifest_application_extras.xml と呼ばれるもう一つ別のファイルを apportable ディレクトリに追加します:
    <?xml version="1.0"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" >
       <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
    </manifest>
    
  5. configuration.json にて、 configuration セクションに以下を追加します:
    "APPLICATION_MANIFEST_EXTRAS" : ["./apportable/manifest_application_extras.xml"],

configuration.json にて、 add_params セクションに以下を追加します:

   "java_res_dirs": [
        "./apportable/res",
    ],
    "java_sourcepaths": [
        "./apportable",
    ],

アチーブメント:

不幸にも Game Services はアチーブメント識別子を自動生成するので、あなたは、 Game Center のアチーブメント識別子から GGS のアチーブメント識別子へのマッピングを何種類か作らないといけないでしょう。

リンク:

https://developers.google.com/games/services/ - Google Game Services メインポータル

Tips:

確認して欲しいのは、 Game Services リスト配下のデベロッパコンソールの中で、あなたがテスタとしてリストされているかということです。

もしあなたが Google Plus 経由でアプリを解除したら、あなたはテスタから除外されるでしょう。

お役立ちリンク:

https://developers.google.com/games/services/console/enabling

StoreKit - Google Play

インディーズ層にしろプロ層にしろ、 StoreKit In-App Purchases をあなたの Google Play リストに追加することができます。

App Configuration - DEPRECATED

警告: SKProducts.plist は、現在のバージョンの SDK 上ではもはや要求されていません。このドキュメントは、まだ古いバージョン上のデベロッパを対象にしています。

まず最初に、あなたは SKProducts.plist ファイルを配置する必要があります。我々はあなたが始めるためにここに例を作っておきました。このファイルを AppName.approj/ に置きます。

2番目に、 configuration.json は、リファレンスを、追加されるこのファイルに含める必要があります。

{
    …
    "add_params": {
        ...
        "assets": [
            { "asset": "relative/path/to/SKProducts.plist", "target": "SKProducts.plist" }
        ],
        ...
    },
    ...
}

Google Play からアプリケーション識別子を削除するのは現在不可能なので、良いベストプラクティスは、 configuration.json の中の APPLICATION_IDENTIFIER を、 com.companyname.appname.test のような何かに変更することです - ただしこれらの変更をパブリッシュしてはいけません!

警告: SKProducts.plist は、現在のバージョンの SDK 上ではもはや要求されていません。このドキュメントは、まだ古いバージョン上のデベロッパを対象にしています。

Testing an existing App with IAP

  1. あなたは既存テストアプリを削除したり、リストを再作成する必要があるかもしれません(これは、キーを割り当てるキーストアを必要とすることから、どうにかしなければなりません -- 以下の巻末ノートを見てください)。
  2. 確認して欲しいのは、デベロッパコンソールの In-app Products セクションは、何があなたの SKProducts.plist ファイルの中にあるのかマッチさせるということでず。あなたはまた、リストの変更を素早く行う都合上、そのファイルをエクスポート/インポートもしくはどこかへ隠したくなるかもしれません(特にもし多くのアプリ内アイテムがあるのであれば)。
  3. Services & APIs サブタブを開き、ライセンスキーのメモを取ります(以下の SIGNING_PUBKEY の中で使われます)。
  4. コマンドシェルにおいて、キーを割り当てるあなた自身のテストアプリを生成しますが、例えば以下の通りです:
     keytool -genkey -v -keystore ~/my-testing-release-key.keystore -alias mytestingkeys -keyalg RSA -keysize 2048 -validity 10000
    
    • 注記:キーパスワードはキーストアパスワードと同じにします。
      keytool -selfcert -validity 10000 -alias mytestingkeys -keystore ~/my-testing-release-key.keystore
  5. apportable ビルドを適切な変更設定で実行します(BASH シンタックスを見て下さい):
    • 日付を保存します: date +%s
      BUILDTIMESTAMP= SIGNING_PUBKEY='' ANDROID_KEYSTORE='/my-testing-release-key.keystore' ANDROID_KEY_NAME= mytestingkeys ANDROID_KEYSTORE_PASS='' apportable build
  1. 結果として得られた APK を Google にアップロードします(APK はおそらく以下のようなパスの下にあります):
     ~/.apportable/SDK/Build/android-armeabi-debug/Spin/Spin-debug.apk
     
  2. もし APK が50MBを超えるのであれば、あなたはそれをアップロードできないでしょう。回避策として、以下のセクションをチェックして下さい。

Tips

  • あなたのキーをリストするには(かつ SHA1 のフィンガープリントを調べるには)
      keytool -list -v -keystore ~/my-testing-release-key.keystore
    

Stripped or Expansion Builds

  • もしあなたの APK が50MBを超えるのであれば、ひとつの回避策は、 Release.final の外でストリップされた全てのアセットで APK をまずアップロードすることです(もしこれで50MB未満になるならです)。それから、デバイス上で通常のビルドとインストールを行い、 BUILD_TIMESTAMP が同じになるようにします。
  • もしあなたが拡張ビルドを実際にテストする必要があれば、拡張ファイルビルドを実施するためにこのスクリプトテンプレートをアップロードすることになりますが、結果は状況により異なります。
    BUILD_TIMESTAMP=... SIGNING_PUBKEY=... ANDROID_KEYSTORE=... ANDROID_KEY_NAME=... ANDROID_KEYSTORE_PASS=... EXPANSION_FILES=yes EXPANSION_FILES_BUILD=yes EXPANSION_FILES_BUNDLE=yes BUILD=staging apportable && adb install -r ~/.apportable/SDK/Build/android-armeabi-staging//-staging.apk && adb push ~/.apportable/SDK/Build/android-armeabi-staging/// && sleep 3 && BUILD=staging apportable just_debug

Notes

  • 確認して欲しいのは、将来の APK アップロードのためにあなたのキーストアを保存しておくということであり、同じ証明書でサインされない限り、 Google は新しい APK を認めてくれません…
  • Rebuilt APKs は、あなたが同じ BUILD_TIMESTAMP かつ上記の他の環境変数を使う限りはアップロードされる必要はないはずです。

Helpful Links

https://checkout.google.com/sell/orders?ordersTable=1 - The merchant orders inbox
http://developer.android.com/tools/publishing/app-signing.html - APK のアップロードがエラーになったときの問題をベリファイ/デバッグするために非常に役立ちます(関係のあるコマンドラインステップをすべて見せています)
http://developer.android.com/google/play/billing/billing_testing.html - 請求のテスト
http://developer.android.com/google/play/licensing/overview.html - ライセンス概要/IAP 概観

StoreKit - Amazon

Setting up the Configuration.json File

StoreKit の Amazon バージョンを使うためには、何点か configuration.json ファイルに追加される必要があります。

add_params セクションは以下の通りです:

"add_params": {
 ...
// A list of dependencies.  Typically these correspond to
// frameworks in the xcode project.

"deps": ["StoreKitAmazon"],

あるいはもし同じコンフィグレーションファイルを両方のストアで使いたいなら以下の通りです。

"deps": [
    {"dep" : "StoreKitAmazon", "env" : {"TARGET_APP_STORE" : "amazon"}},
    {"dep" : "StoreKit", "env" : {"TARGET_APP_STORE" : "google"}},],
...
}

また remove_params セクションは以下の通りです:

"remove_params": {
... 
// A list of dependencies.  Typically these correspond to
// frameworks in the xcode project.
"deps": ["StoreKit"],

...
}

Creating IAP in the Amazon Developer Portal

個々の IAP に対する要求のリストです:

  1. Consumable/Entitlement/Subscription - Entitlements は、アカウント毎に一度だけのみ購入され得ます; Consumable は、何回でも購入され得ます。 Subscription は、アカウントに関連付けられた継続的なサービスです。あなたはあなたが追加する IAP の種類をどれにするか選ぶ必要があります。
  2. SKU - IAP 識別子です。通常 com.company.gamename.itemname のようなものです。
  3. コンテンツ配布 - もしあなたが追加コンテンツを追加する必要があるなら指定します。
  4. 価格
  5. タイトルとデスクリプション
  6. 小アイコン (114x114 png), 大アイコン (512x512 png)
  7. 少なくとも1枚のスクリーンショットと”購入アクション”スクリーンショットが必要です(この画像は、購入が正常に終了した後にユーザに直接見せられるスクリーンを表現すべきです”)。需要可能なフォーマットは、800 x 480px, 1024 x 600px, 1280 x 720px, 1280 x 800px, or 1920 x 1200px を含みます。

Testing IAP

あなたは Google もしくは Kindle デバイスを、以下のステップに従い Amazon IAP をテストするために使うことができます:

  1. JSON ファイルをゲームの IAP に対して Amazon デベロッパコンソールからダウンロードします。
  2. ゲームのリストに進み → In-App Items → (下矢印の)JSON Data File ボタンを押して下さい(このボタンは画面上の右にあります)。
  3. このファイルは再生成/再ダウンロードされる必要がありますが、それは IAP コンフィグレーションが何かしら変更されたときです。
  4. JSON ファイルをデバイス上の /mnt/sdcard ディレクトリに "adb push /mnt/sdcard/amazon.sdktester.json” コマンドを介して描き込みます。
  5. Amazon SDK テスタ APK をデバイスにインストールします。アプリを起動し、それからデフォルトユーザ名を変更します。あなたのアプリの Amazon バージョンをデバイスにインストールし、それから起動しプレーします(そして IAP をテストします)。この方法はあなたのクレジットカードにチャージしません。

お役立ちリンク

https://developer.amazon.com/sdk/in-app-purchasing/documentation/testing-iap.html
https://developer.amazon.com/sdk/in-app-purchasing/reference/google-to-iap.html
https://developer.amazon.com/sdk/in-app-purchasing.html

Amazon GameCircle

まず最初に、 configuration.json において、確認して欲しいのは、GameKitAmazon を状況に応じて追加するということと、GameKit への依存を除去するということです。

重要な注記: Apportable プラットフォームは、まだ Amazon GameCircle 2.x をサポートしていません。我々は現在 1.x だけをサポートしています。これが意味するのは、 GameCircle は Kindle Fire デバイス上でアクセスされ得るのみということです。我々が 2.x を実装したら、GameCircle は非 Kindle Android デバイスでも同様にうまく有効になり、それはそれらが Amazon Appstore からアプリをインストールし得る限りそうなります。

GameCircle Integration 1.x をテストするためには、あなたはセキュリティプロファイルをあなたのアプリに対してセットアップするだけでなく、少なくともひとつのアチーブメントかリーダーボードも同様に設定する必要があります。

あなたがセキュリティプロファイルを作ったら、 Amazon はあなたに名前とデスクリプションを記入するように促し、 Amazon はあなたに Client ID と Secret ID を与えるでしょう。あなたはこれらをあなたがテストしようとしているバイナリに含める必要があります。

1) 現在、我々は GameCircle 2.0 をサポートしていませんので、ゲームとアチーブメント/リーダーボードがパブリッシュされない間にデバイス上でテストするために通してやってみる必要のあるいくつかの追加ステップがあります。 Amazon はこれを”あなたのバイナリのホワイトリスティング”と呼んでいます。それで、まず最初に、あなたはあなたのアプリを割り当てるために使っているキーストアの SHA1 を入手したくなるでしょう。そのためには、以下をタイプします:

keytool -list -v -keystore full_path_to_your_keystore_file -alias alias_name

このコマンドがあなたのキーストアに対して与える SHA1 をコピーします。あなたはそれからこのフォームに記載することで amazon にコンタクトする必要があるでしょう。サブジェクトとして、'Amazon GameCircle API’ を選び、メッセージ中には上記の SHA1 と同様に、 GameCircle 1.x API を使うため GameCircle に対する あなたのバイナリをホワイトリスト化するために amazon に尋ねることになるあなたのアプリケーションのパッケージ名を含める必要があります。

我々は現在、我々の GameCircle をバージョン 2.x にアップグレードしようと作業中ですので、将来このセットアップ(すなわちメールする部分)の全ては必要とされなくなるでしょう。我々が 2.x にアップグレードしたら、あなたが正しく作成して実行してテストできるように、我々は適切なドキュメントが有効になるようにすることを確認しています。

2)テスト用でデバイスあるいは複数のデバイス上の GameCircle ニックネームは、Testing の下で登録されなければなりません。あなたは、Home ボタン→Games→Menuボタン→Profile を押下することで Kindle デバイス上のニックネームを見つけることができます。それは、"Your GameCircle Nickname is _____.” のような何かを示すべきです。あなたはそのニックネームをテスタホワイトリストに追加することが必要です。

3)そうしてから、あなたはアチーブメント/リーダーボードをテストすることができるはずです。言い換えると、あなたはあなたのバイナリをホワイトリスト化して、あなたがローカルプレーヤーとして認証されたときの GameCircle の修羅場を見るべきです。あなたはまた、あなたのアプリが Kindle 上でオープンでいる間、ソフトメニューの中でビーチボールにタッチすることで GameCircle が動作していることを確認することもできます。


目次へ戻る

FruitsFields - 寄付代わりに購入いただけると嬉しいです。
Icon-72.png as_available_appstore_icon_20091006.png

サポートページはこちら。
http://cbbandtqb.toypark.in/FruitsFields/index_jpn.html

posted by cbbandtqb at 00:07| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/366245287

この記事へのトラックバック