ラベル Kindle-アプリ開発 の投稿を表示しています。 すべての投稿を表示
ラベル Kindle-アプリ開発 の投稿を表示しています。 すべての投稿を表示

2014年12月28日日曜日

Kindle Fire HD8.9 デバッグモードにする

Kindle Fire HD8.9 デバッグモードにする手順メモ。


■Kindle Fire HD8.9上での操作手順

Kindleの画面で上から下へスワイプ。その他をタップ。




セキュリティをクリック。
「ADBを有効にする」のオンをタップ。



 ダイアログ内容を確認した上で同意できれば「OK」をタップ。


 オンに変わっていればデバッグモードに切り替え完了。


■PCとの接続確認

テスト環境: Windows7x64。

  1. PCとKindleをUSBケーブルで接続。
     
  2. PC上でコマンドプロンプトを開き、以下のコマンドを入力。
    adb devices
    ※注Android SDK要。パスが通ってない場合はディレクトリを移動してから実行する。
      Android SDKイントール先/sdk/tools あたりにある。
      
  3. 次のようなログが出ればUSB接続状態OK。XXXXXはKindleの固有デバイスID。
    List of devices attached
    XXXXXXXXXXXXXXXX         device。
     
  4. もしも以下のような場合はKindle側のデバッグモードやUSBケーブルを再度確認する。








2014年3月10日月曜日

Kindleアプリのアイコン

Kindle FireHD8.9などでアプリのランチャー画面ではアイコンが高解像度(?)になっている。

Unityでアプリを作ってKindleに送りこむと低解像度なアイコンが表示される。

どうすれば高解像度なアイコンにできるのか?

■アマゾンの公式見解

一応アマゾン公式の回答を得ることができた。

結果からいうと、作成したアプリに高解像度アイコンは入れる必要はない。
ガイドラインにそってアマゾンストアに登録すれば良い。


つまりUnity作成のアプリでも普通にアイコンを登録しておけばいい。

肝はアマゾンアプリストアに作成したアプリを「登録する時」にある。
その際にスクリーンショット、512x512アイコン等々の各種付加情報登録をうながされる。これらの中から高解像度アイコンの材料を拾っているらしい。

そしてアマゾンアプリストアからアプリを購入&ダウンロードする時に、事前登録したアイコン画像をストアからKindleに送信しているとのこと。
Kindle端末はその画像を高解像度アイコンで使用する。

なので、サイドローディングアプリ(公式ストア以外から手動で入れたアプリ)では高解像度アイコンは表示されないとのこと。


つまり、アマゾンアプリストアでKindleでアプリを購入した場合のみ高解像度アイコンが自動的にランチャーにダウンロード&付加される。


2014年2月13日木曜日

デバイスがKindleか判定する


動作中のデバイスがKindleかアプリで判別するサンプルを以下に記述。

-----

/*
 *    Display device info.
 * 
 * @note More detail information of SystemInfo that see below url.
 *    http://docs-jp.unity3d.com/Documentation/ScriptReference/SystemInfo.html
 */
using UnityEngine;
using System.Collections;

public class Sample_KindleCheck : MonoBehaviour {
 string debug_message; //!< Display strings
 GUIStyle labelStyle; //!< GUI text
 
 public static AndroidJavaClass unityPlayer;
 public static string MODEL {get; set;}
 public static string MANUFACTURER {get; set;}

 void Start(){
  Screen.orientation = ScreenOrientation.Portrait; //Set screen to portrait.
  //Screen.orientation = ScreenOrientation.Landscape; //Set screen to landscape.
  Screen.sleepTimeout = SleepTimeout.NeverSleep; //No sleep device when running this app.

  labelStyle = new GUIStyle();
  labelStyle.fontSize = Screen.height / 60;
  labelStyle.normal.textColor = Color.white;

  debug_message = "deviceModel: "+ SystemInfo.deviceModel + "\n";

  if(Application.platform == RuntimePlatform.Android){ // is this Android device?
   AndroidJavaClass buildClass = new AndroidJavaClass("android.os.Build");
   MANUFACTURER = buildClass.GetStatic<string>("MANUFACTURER");
   MODEL = buildClass.GetStatic<string>("MODEL");
   debug_message += string.Format("MANUFACTURER: {0}\nMODEL: {1}\n", MANUFACTURER, MODEL);

   //Kindle check
   if(MANUFACTURER=="Amazon") debug_message += "This is KINDLE";
   else debug_message += "This is not KINDLE";
  }
 }
 void OnGUI(){
  float x = Screen.width / 30;
  float w = Screen.width * 8 / 10;
  float h = Screen.height / 19;

  string text = string.Format("{0}", debug_message);
  GUI.Label(new Rect(x, 64, w, h), text, labelStyle);
 }
}
-----

Kindle機の場合、
  • android.os.Build.MANUFACTURER に "Amazon"が格納されている
  • android.os.Build.MODELに モデル名が格納されている
    ※モデル名は SystemInfo.deviceModel からでも取得できる。
Kindle機の場合現状 MANUFACTURER が全て "Amazon"になっているのでこれで検出できる。




各Kindle機種とモデル名の対応は以下に。

モデル名    機種
(第一世代)Android 2.3.3(Gingerbread / API level10)
"kindle Fire"   Kindle Fire

(第二世代)Android4.0.3( Ice Cream Sandwich / API level15)
"KFOT"     Kindle Fire
"KFTT"     Kindle Fire HD
"KFJWA"      Kindle Fire HD8.9 (wan)
"KFJWI"     Kindle Fire HD8.9 (wi-fi)

(第三世代)Fire OS 3.0。Android4.2.2(JellyBean / API level17)
"KFSOWI"    Kindle Fire HD
"KFTHWA"     Kindle Fire HDX (wan)
"KFTHWI"     Kindle Fire HDX (wi-fi)
"KFAPWA"     Kindle Fire HDX 8.9 (wan)
"KFAPWI"      Kindle Fire HDX 8.9 (wifi)



追記2014/6/27:
今後、MANUFACTURER=="Amazon" だけではFire Phoneも該当する可能性がありえそうです(実機が無いので未確認)。
明らかにKindleと判定するにはさらにモデル名も照合すれば良いのですけど。
アプリによって判定を随時考慮する必要があるかもしれません。


2014年2月10日月曜日

Kindleでアプリ開発~Amazon SDK

Kindleでアプリ開発するにあたりメモ。
AndroidOS と Fire OSとの差異やAmazon SDKなどについて。
開発はUnity利用を想定しているのでその辺も随時触れてみる。



Androidタブレットは普通Android OSを搭載しているが、KindleはFire OSを搭載している。

Fire OSはAndroidベースにアマゾンが手を加えたものでAndroid OSと互換性がある。


アマゾンのテストによると、市場の1600個のAndroidアプリのうち75%はKindle Fireでそのまま動作したとのこと。
この数字で互換性が高いとみるかどうかはなんともいえないが、互換性が100%ではないということは示唆している。
ランチャー等もアマゾン独自のものとなっているので、一見すると別物にみえる。



■ベースとなっているAndroid OSバージョン


を整理すると以下のような感じ。



(第一世代)Android 2.3.3(Gingerbread / API level10)ベース
Kindle Fire


(第二世代)Android4.0.3( Ice Cream Sandwich / API level15)ベース
Kindle Fire
Kindle Fire HD
Kindle Fire HD8.9

(第三世代) Fire OS 3.0。Android4.2.2(JellyBean / API level17)ベース
Kindle Fire HD   
Kindle Fire HDX
Kindle Fire HDX 8.9



アプリ開発において見るべきはAPI levelの部分。


現行最新Unity 4.3.4.f1では Gingerbread 2.3.1 API level9 でコンパイルできるので全て網羅できる。

API level10は一部の携帯端末等でまだ使われているが、このAPI搭載の機器は性能が非力な傾向がある。このAPI levelに対応するのならば実装を充分軽くする工夫が必要になるかもしれない。昨今のデバイスを主軸におくならもはや API level15 としていいかもしれない。特にUnityで3Dアプリを作る場合は機器の性能がある程度必要だと思われるので。





■Amazon Mobile App SDK

KindleFire用アプリ開発でも、一般的なAndroid開発と同じものを使用(Eclipse+Andoird SDK、Unity等)。

それらに追加する形でアマゾンサービス特化のSDK「Amazon Mobile App SDK」がアマゾンより提供されている。(https://developer.amazon.com/public/ から、GETTING STARTED > Android / Fire OS > Get the SDK)

このSDKに含まれている機能の概要は以下のようなもの。基本的に利用は全て無料。
※特に利用する必要がなければ使う必要はないので必須というわけではない。

一部の機能は既にUnityプラグイン対応済み。これはちょっと嬉しいかも。さすがアマゾン。


◆アプリ内課金

アプリ内からゲーム内通貨を販売できるAPI。
デジタルコンテンツ=ゲーム内アイテム等や定期購読にも対応らしい。
※ちなみにアマゾンは独自のゲーム内通貨を既に用意しています。
※Unityプラグイン対応有




◆モバイル広告

アプリに広告をのせるためのAPIとサンプル。いわゆるCPM。
出稿元はアマゾンと商標広告主。アマゾンと他のAndroidストアに配信。
※これはUSユーザーのみ対象。




◆モバイルアソシエイト

アプリを通じて製品販売が成立した場合6%収益。
※これはUSユーザーのみ対象。


◆Amazon Device Messaging

略してADM。クラウド側からKindle端末へメッセージをPushできる。
ユーザーに対して何かNotificationを送る等に使えるらしい。
いろいろ使い道はありそうだが、これは少々上級者向けかもしれない。




◆GameCircle API 

ゲームの付加機能を提供するもの。
ゲームでのクリア履歴や達成項目リスト、ランキングなどをクラウド側で記憶したり、ゲームのセーブをクラウドに行えるAPIを提供。
これは便利な気がする。
※Unityプラグイン対応有


◆Amazon Map API

Google map APIの代替え。
KindleではGoogle APIが使えないとのことで、Amazon APIを使う。
これは地味にアプリの互換性に関わる。Kindleで動作しないアプリの多くはGoogleAPI絡みではないだろうか。
アプリ実装時点から考慮しておけばAndoid、Kindle両対応は難しいものではないと思う。


◆A/Bテスト


A/Bテスト。ちょっと具体的に何をA/Bテストするのか公式サイトから読みきれてない。
5種類のアプリを用意してテストにかけるような記述がチラホラ。


◆アナリティクス

使ってないのでなんともだが、どうも以下のような感じ。

アプリのダウンロード/インストールの統計。
アプリを繰り返し遊んだか、どれくらい長い時間アプリを使用したか。
アプリの保持率(インストールしたままの期間?)
アプリでユーザーが取った特殊な行動について。




■無料アプリテストサービス

アマゾン公式のDeveloperサイトでは無料アプリテスト「App Testing Service」を提供している。
このサイトに作成したアプリをアップロードすると問題がないか検査してくれる。
※検査が通るとそのままストアにアップロードに移れる
※どこまで検査しているのかわからないが、一応通しておく方が良い。




■まとめ

コンパイル時のAPI level に注意すればKindleでも基本的に動く。Kindleだからとあまり深く考える必要もない。

ただしGoogleAPIを使う際は注意。Kindle対応ならAmazon SDKを利用しなければならない。1つのアプリで両対応する場合はKindleか否かを判定する必要もでてくる。


ゲーム作成においてゲーム内課金を考慮すると、Amazon Mobile App SDK提供のGameCircle API 、アプリ内課金APIには注目。
課金収益をアマゾンが管理してくれるのは面倒がなくてありがたい。しかもUnityプラグイン対応済みである。(※ただしEINに注意。要確認)

これはゲーム開発としては結構良いソリューションではないかと思う。
しかも実はこのAmazon Mobile App SDK、あくまで「アマゾンのサービス」を利用するSDKなので、デバイスはIOS、Android、KindleFireで使えると明言されている。

私的には Unity+Amazon Mobile App SDK でゲーム内課金/アイテム販売というのは一般開発者からみるとすごく敷居が低くなった気がする。