オーシャンドライブ(ininc)開発チームのブログ

ブログの説明を入力します。


テーマ:
今回iPhoneアプリでプロジェクトAチームで「ここでキスして」を完成させたが、Appleがなかなか審査を通さないので、無駄な時間が過ぎるのもなんだしなって軽い気持ちでAndroidへ移植を始めました。
iPhoneをアンドロイドに移植する際の注意点をまとめてます。

7)補足SDカードのアドレスについて
HTC Jという機種があるんです。ISW13HTという2012年5月に発売された機種なのですが。
どうやら、これがSDカードの場所が環境変数で取れないらしいのです。
で、これ対策でのソースを記述しているURLを発見。

http://anagoinu.blogspot.jp/

前回の記したソースよりこっちの方が万能なのかもしれません。

String SdPath=System.getenv("EXTERNAL_ALT_STORAGE"); // Motorola系
if(SdPath==null){
SdPath=System.getenv("EXTERNAL_STORAGE2"); // Galaxyの新しい機種
if(SdPath==null){
SdPath=System.getenv("EXTERNAL_STORAGE"); // Galaxy古い機種や一般的な端末
if(SdPath==null){
SdPath=Environment.getExternalStorageDirectory().getPath(); // 標準
}
}
}
File file = new File(SdPath+"/ext_sd");
if(file.exists()){
SdPath+="/ext_sd";
}

ちなみに自分もこのソースにそのまま載せ替えてます。以前のものであれば万が一環境変数で取れない場合はエラーになるので、一応、この標準というものも含めて考えた方が良いかと。

8)OS 4.0 以上に気を付けよう!

実は先ほどのSDカードのアップデートをした直後に、ISW13HTユーザーのお客さんから、以前は使えたのだが今回いきなりエラーが出てクラッシュするとの報告。まあ、当然SDカードの問題を疑ったのですが、お客さんから聞く限りどうやら違うらしい。??
で、ディベロッパーコンソールに上がってくるエラーをじっくり見て検索。
Caused by: android.os.NetworkOnMainThreadException
とあるのだが、これは基本的にパーミッションでネットワークを許可していない時に出ないエラーでしてこんなミスをしていたらクラッシュログがもっと半端ないはず。
で、次の行に注目。
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
日本語でのページはそれほどないのですが、OS4.0以上であるとメインスレッドにネットワーク通信のソースを記述するとエラーになるという無茶な情報を拾いました。これ、ソースを修正するの無茶だなと思ったのと以前は使えたというお客さんの声を思い出しもう一度記述をチェック。基本過去を振り返らないタイプなんでバックアップを取らないというプログラマーにあるまじき習性があるので記憶力勝負。
実はアプリ内課金のソースを埋め込んでいてどう考えてもその周りしかない。しかし、クラッシュするページはアプリ内課金関連を一切埋め込んでいない。じゃあ、マニュフェストファイルですよね。って感じで探したら心当たりが一点。
以前は、
"<"uses-sdk android:minSdkVersion="8" "/>"
だったんですが、アプリ内課金のサンプルソースのマニュフェストを参考に
"<"uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" "/>"
としてました。これのソースでOS4.0のシミュレーターで動かすと確かにクラッシュします。
で、
"<"uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" "/>"
に修正してエラー問題なし。
マニュフェストをいじった時はOSの問題も関与するのですべてのOSで調べましょうということですね。まあ、解決したので良しとします。上記のタグですがブログの設定するエディターの問題でタグを回避できないのでダブルクォーテーションで囲っているのですが転用するときは取ってください!
次回こそはアプリ内課金を書けるかもしれない。



にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!

AD
いいね!した人  |  コメント(0)  |  リブログ(0)

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。