2013年06月21日

Apportable - Debugging tips

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

Debugging tips

Compilation errors

コンパイルエラーの大半の原因は、アプリが SDK でサポートされていない API を呼び出しているためです。 それらの実装に取り組んでみるか、あなた自身でスタブを作ってみることができます。 もし膨大な作業となるようであれば、その API が SDK の次のバージョンに含まれるかどうか我々に問い合わせて下さい

他には以下のような tips があります:

  • 我々の clang のバージョンは iOS にとってまだ問題でないような新し目のエラー/ワーニングをピックアップするかもしれません( Apple はClang のリリーススケジュールより遅れたバージョンであるため)。 これらのエラーを修正するのは、アプリの iOS バージョンにおけるバグを修正するのと同じことになります。
  • 追加的なシェルスクリプトを使ったプロジェクト、もしくは iOS ターゲットの依存性として追加的な Mac OS X ビルドターゲットはサポートされていません。 --xcode-target= オプションを伴ったシェルスクリプトに依存しないターゲットを指定できますが、デフォルトターゲットはビルのためのスクリプトを要求しないことを確認して下さい。
  • アプルヘッダを失うことはしばしばあると思います。 header_path を適切な configuration.json ファイルに追加して下さい。

Link errors

リンクエラーは、 3rd パーティーのスタティックライブラリを使ったりすると発生するかもしれません。 リンクエラーを解決し、とにかく進めるためには、あなたの main.m (もしくは他の Objective-C ファイル)の中の存在しないクラスに対する空の実装を追加することでできます。

#ifdef ANDROID
#import "Foo.h"
@implementation Foo
@end
#endif

スタティックライブラリを動作する実装に置き換える方法のさらなる情報は、 Static Libraries を参照下さい。

Installation issues

もしデバイスにビルドを送り込むのに問題があるなら、 adb サーバが実行中かデバイスがアタッチされているか確認するために adb device を実行させたくなるかもしれません。

~/.apportable/SDK/bin から adb を実行させるのがベストです。 実行中の adb のバージョンが複数あるのは、ビルドもしくはデバッグにおけるエラーの原因となりえます。 もし不具合がある旨のステータスとなったら、デバイスを切断し、やり直すために adb kill-server を使って下さい。

もし複数のデバイスがアタッチされているなら、あなたがビルドを送り込みたいシリアル番号を指定するために ANDROID_SERIAL 環境変数を使って下さい。

Accessing logs

もしアプリの動作がおかしいようであれば、 apportable log をコマンドライン上で Android ログ出力を見るために実行して下さい。 NSLog の呼び出しは、(リリースビルドではなく)デバッグビルドにおいてはログの中に表示されます。 あるいは我々のプラットフォームからのログや Android それ自身から見ることもできます。

Attaching a debugger

gdb デバッガを使ってあなたのアプリをデバッグするには、 apportable debug を起動して下さい。 このコマンドは、実行中のプロセスに対して gdb をインストールし、起動し、アタッチします。 もしすでにアプリをビルドし、デバイスにコピーしているのであれば、 apportable just_debug は(必要に応じて)アプリを起動し、デバッガをアタッチします。

もしあなたがルート化されたデバイスを使っているなら、代わりに ROOTED=yes apportable debug を実行する必要があるでしょう。

デバイスをデバッグする最初の時に、 gdb が適切にスタックトレースをデコードできることを確認するためにデバイスからあなたのコンピュータにいくつかライブラリがコピーされます。 このことは、デバッガが最初にトライする時にアタッチするのに少し時間を要することの原因となります。 次回以降の起動では、より速くアタッチするでしょう。

gdb のインタフェースにおいて、中断のために Ctrl+C を、そしてレジュームのために continure を使うことができます。 あなたは、 Objective-C メソッドを起動するために p を使うことができ、例えば p [obj intValue] のように使い、また po をオブジェクトの文字列表現のために使うことができ、例えば po myString のように使います。 もしグローバルな状態にこの方法でアクセスしたいなら、 Objective-C で(あなたのコード中のどこかでブレークポイントを設定し、そして継続することによって)生成されたスレッド上でそうしようとしているのか、あるいはあなたは予期しない結果を得ることになるかもしれないこと確認しておいて下さい。

Layout issues

Android 向けに開発していると、 iOS において存在するよりも多くのバリエーションのスクリーンサイズがあることに気付かされるでしょう。 あなたの手助けとなるように、あなたが Android 上で見つけるいくつかの共通的なスクリーンサイズを追加した iOS シミュレータのためのスキンを置いておきます。

  1. http://static.apportable.com/sdk/ApportableSimulators.tgz をダウンロードし、 unzip して下さい。
  2. iOS シミュレータを終了させて下さい(もし実行中であれば)。
  3. Apportable Simulators.mpkg をダブルクリックしてインストールしてください。

シミュレータスキンを使うアプリを有効にするには、 main.m 中の UIApplicationMain への呼出しの前に以下の行を追加して下さい。

setenv("CLASSIC", "0", 1);

それから、いくつかの共通した Android のスクリーンサイズを持った Hardware メニューからさまざまなデバイスを選ぶことができます。

iPhone スクリーンもしくはより高解像度の Android デバイス用にデザインされたアプリの見栄えを改良するためには、 Apportable UIScreen エクステンションを使って下さい。

Image issues

もしある画像がレンダリングされないようであれば、サポートされている画像フォーマットを使っているか確認して下さい。 Apportable は現在のところ、 Xcode がするように PNG をデバイスに送る前にあなたの PNG を pngcrush しませんので、サイズを減らしたりサポートされていないメタデータを削除するために PngcrushImageOptim を使って PNG を crush したくなるかもしれません。 Apple の iPhone 特有の PNG に対するバイトオーダはまだサポートされていません。


目次へ戻る

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

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

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

メールアドレス:

ホームページアドレス:

コメント:

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

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

この広告は1年以上新しい記事の投稿がないブログに表示されております。