2011年2月28日月曜日

Motorola XOOMを発注

TwitterのTLで@l_b__さんがMotorola XOOMを発注したとの内容を見て、思わず私もポチってしまいました。(笑)

Motorola STOREから発注を行いました。Android 3.0 (Honeycomb)搭載のXOOMですが、Bestbuyでは店頭のみの販売で2/24から開始しています。そもそも、Verizon Wirelessの端末は基本的にSIM形式では無くauと似た周波数ですがauとは若干異なるため、日本に輸入してもそのままでは利用することは出来ません。

#米国の通信業者では、AT&TまたはT-MobileならSIMをdocomo製・SBM製にすると動作する可能性があります。

今日の発表でauがMotorola XOOM WiFi版を販売することになったので、一般の人はこれを待って購入するのがベストというかこれしかありません。私の場合には、開発用テスト機と展示会デモ機としての役目もあり、どうしても機種を数多く購入するために○年縛りになることは避ける必要があるので海外端末に流れる傾向があります。

前置きは置いておいて、Motorola STOREですがAmazon.comが運営する販売サイトに載った独自サイトとして営業していました。この便利な点は、Amazon.comのアカウントがあれば同じまま利用できる点。配送も恐らくはAmazon.comを利用しているものと思われます。

発注を行うと、hostedbyamazon.comドメイン(amazon.comが取得したドメイン)から送信されるので、安心感もあります。ただ、海外から個人輸入する場合に関税が必要なものはAmazon.comは直接発送を行いません。
私の場合には、スピアネットさんを利用して転送していますが、オレゴン州にある転送サービスを利用すると州税が$0なので少しでも安価にすることが出来ます。今回、私の支払ったCA州税は$81.9です。
#オレゴン州はカリフォルニア州より北なので、輸送時間がやや長いです。金より時間を選択しています。(笑)

今回購入したのは、XOOM本体とPortfolio Case for MOTOROLA XOOMです。



ところで、関税が不要なものとしては、CD,DVD,Blu-rayなどのコンテンツ、光学機器、化粧品などです。詳しくはジェトロのサイトでって今探すと今年の1月で個人輸入のコンテンツが閉鎖していました。orz
個人輸入の場合には一般的に10万以下の少額輸入貨物になるので、税関サイトの少額輸入貨物の簡易税率が参考になります。

私はAmazon.comでBlu-ray版のエヴァンゲリヲン新劇場版 序1.11を購入しました。(笑) なにせ、価格は$15.49(私が購入した価格は$18.99でした)です。2.22が$22.99ですね。Blu-rayはアメリカと日本は同じリージョンコードなので便利です。
#2.22は日本で購入しました。なにせ早く手に入れたかったので。(汗

衣類とかでは、革製だと関税が掛かりますがそれ以外だと概ね関税は掛からないので輸出してくれるところが多いです。靴も関税が掛かるので基本的にはショップから日本へ直送することは無理です。
例えば、米国から日本へ製品を輸出する場合には、税関手続きが必要となり書類を作成しなければなりません。この書類を作成し輸送してくれる代行業が転送サービスと言われるものです。

個人輸入でのトラブルもつきものです。国民生活センターに解決困難な個人輸入代行に関するトラブルが記載されています。全てが個人責任ですので、物が足りないとか違うとか、最悪途中で盗まれて箱しか無いなんてこともあります。
因みに、Nexus Sを発注された方で盗難にあったBlogがあります。最終的には保証で新しい製品が到着したようですが、人気商品(iPadとかも輸送中の盗難事件がありました)は注意した方が良いです。

私は運良くいままでは何事も無く何度も輸入していますが、勧める訳ではありませんので独力でショップを探して発注することで、発注程度の英語力は身に付けて頂けばと思います。個人的にはAmazon.comぐらいで発注するのが割と安全性が高いとは思います。が、間違った製品とかは全て英語でのやり取りになることは覚悟してくださいね。

2011年2月19日土曜日

Windows XPでAndroid JNIをやってみたが、、、

結果からいうと、現段階では上手く動作していません。

どうも、Windows版のEclipse 3.6.1ですがコンソールが正しく受け付けてくれないことが原因で、ndk-buildコマンドへ辿りつけない。仕方が無いので、.batファイルで迂回を試みるも撃沈。.batファイルでcygwinのbashをログイン起動し、パイプでndk-buildを起動させようとしてもダメ。

.batファイル中に記述したパス名(/cygdrive/c/...)を受け付けないようだ。

ってことで、いろいろ実験してみたがWindows環境ではダメっぽい。Macは基本がUnixなので恐らくは問題ないのではないかって思っています。成功された方がいましたら、コメント頂けると幸いです。

Windows利用の方はVMWare PlayerでもダウンロードしてUbuntu 10.10をインストールする方法が良いかと。(笑)

2011年2月18日金曜日

Android JNI を Eclipse CDT でプロジェクト統合する
<ubuntu 10.10編 その2>

前回の<その1>ではどこのサイトでもAndroid SDKをインストールする解説と同じですが、最後の方は面倒になったので端折ってしまいました。まぁ、あまり細かく書いても初心者さんが見ることはあまりないのでは?って思っていますので。

私(だけなのかもしれません)が今まで作業した方法は、JNIのC部分を別プロジェクトとして作成し、コマンドラインからCコンパイル後、Javaに取り込んで連携させる方法でした。EclipseにCDTをインストールしても、エディタ程度にしか使えないのであまり意味が無いと思っていました。
久しぶりにJNIを本気で取り組むことになり、何か方法が無いかと思い調査を繰り返してたどり着いたので、備忘録的に記載します。因みに参考としましたのが、CDT AndroidというYouTube動画(英語)です。そのままではNDKバージョン、Eclipseバージョン等が異なり環境もCygwinのWindows環境と違います。

では、今回はJNIのJava環境構築とEclipse CDT連携部分です。前回では環境変数として[ANDROID_NDK_ROOT]をexportしていますが、必須なのかの組み合わせテストまでは行っていないので、やや正確性に欠けるかもしれません。

#当初はexportしないで作業していましたが、設定ミス等がありどれがどれに影響したかまでは未調査です。スミマセン。
#まぁ個人的な備忘録のつもりですので。


<前提>
  • 当資料で利用するサンプルは、NDKに同梱されているHello_Jniです。格納されている場所はNDK展開ディレクトリを基本とし、[samples]->[hello-jni]が格納されています。
  • Ubuntu10.10のEclipseは日本語化していません。Ubuntu 10.04では日本語化を行ったのですが、面倒になったのと日本語化するとダメかも?っていう記述を見た記憶があるので、そのままにしています。

<Androidプロジェクト作成>
  • 最初は元となるAndroidプロジェクトを作成しなければ話になりません。メニューバーの[File]->[New]->[Other]を選択すると、下図の画面が表示されます。この中でAndroidProjectを選択します。
  • Androidプロジェクトの設定画面が表示されます。Javaのみならここで設定するだけなんですよねぇ。
  • 今回はNDKサンプルプロジェクトを選択します。下図のように選択して[Finish]ボタンを押します。因みに下図ではTargetNameがAndroid 2.2としていますが、これは単に2.2以降しか開発しないつもりな私の設定です。
  • 取り込みができれば下図のようにProjectExplorerに表示されます。
  • この時点では、単にJavaプロジェクトを生成しただけです。Propertiesを見るとJavaの設定しか存在しません。

<AndroidプロジェクトのC/C++プロジェクト化>
  • 作業対象のJavaプロジェクトを選択して右クリックします。下図のように[New]->[Other]を選択します。
    ※このメニュー中にConvert to a C/C++ Projectを直接選択してもいいです。(笑)
  • 下図の画面中からConvert to a C/C++ Projectを選択し[Next]ボタンを押下。
  • ここの設定画面では、HelloJNIがCで作成されているので、[C Project]を選択しています。次に[Project type]では[Makefile project]を選択し[Toolchain]はそのまま[Other Toolchain]とします。これでC/C++ Project化は終了です。
    というか、この辺りの設定を自分で全て行うことで出来るって意味なんですよねぇ。
  • 念のために、ProjectのPropertiesを見てみます。ちゃんとC/C++のカテゴリが追加されていますよね。

<C/C++プロジェクトのソース設定>
  • Cのビルドに必要なディレクトリを追加します。下図ではプロジェクト選択後、右クリックにて[New]->[Folder]を選択しています。作業し易い方法で構いません。
  • 追加するディレクトリ名は[libs]と[obj]です。下図ではlibsを追加しようとしている状態です。
  • プロジェクトプロパティを変更します。まず最初はコンパイルを行うための[Include]を変更しなければなりません。標準ではUbuntuのgccで必要なファイルが自動設定されています。
    変更場所は、[C/C++ General]->[Paths and Synbols]で最初は[Includes]となります。
  • [Languages]の[Assembly][GNU C][GNU C++]に設定されている内容を全て削除を行います。Shiftキーで複数選択も出来ますが、それほど多く無いので簡単に出来ますね。今回はCのみなのでアセンブラやC++は変更しなくても良いのでしょうが、まぁ勢いです。(笑
  • 全てが空になったら、上記の[Add...]ボタンを押下します。ここで[File system...]ボタンを押下してディレクトリを選択します。
  • NDKのIncludeファイルディレクトリを選択します。下図のように、NDKを展開したディレクトリの[platforms]->[ビルド選択したAndroid OSのAPI Level]->[arch-arm]->[usr]->[include]です。
  • 選択終了すると以下のように、チェックボックスも選択して[OK]ボタンを押下しておきます。
  • 次に[Source Location]の設定を変更します。初期はプロジェクト直下になっているので、本来の位置である[jni]フォルダにしなければなりません。空に出来ないので、[Add Folder...]ボタンでプロジェクト配下の[jni]フォルダを選択し、自動設定された[/HelloJni]を削除します。
  • 最後に[Output Location]です。ここでは、出力結果をどこにするのかを指定しておきます。ここでは、追加した2つのディレクトリである[libs][obj]を追加し、自動設定された[/HelloJni]を削除します。下図は完了した状態です。
  • 変更箇所を適用させるために[Apply]ボタンを押します。するとインクルードパスを変更しているためにリビルドするかを聞いてきますが、ビルド設定が完了出来ていないので[No]にしています。
  • ここまでで、ソースの設定は終了。次はビルド設定になります。
<C/C++プロジェクトのビルド設定>
  • プロジェクトプロパティの[C/C++ Build]を変更します。プロパティを表示し下図のように[C/C++ Build]を表示。その中にある[Builder Settings]の[Use default Build Command]のチェックをオフにし、[Build command]にフルパスでNDKでのビルドコマンドである[ndk-build]を設定します。
    ※フルパス以外ではコンパイルできませんので注意してください。
  • 振る舞いを変更します。下図のように、[Behaiviour]タブの[Buid(incremental build)]欄には、初期値として[all]が記述されていますが、ndk-buildのオプションである[-B]を入れます。[Clean]ですが、ndk-buildはclean動作が不安定との情報もあったのでチェックをオフにしました。
  • 次に左にある[Environment]を選択します。下図の中に<その1>で設定されたパスを通したいので、[Add...]ボタンを押します。
  • 追加用の画面です。[Name]に「PATH」を入力し、値には[Variables]ボタンを押します。
  • 選択画面の中で、PATHを選択し[OK]ボタンを押します。
  • 先ほどの入力画面に戻ります。下図の通り直接入力しても同じですね。(笑)
    [OK]ボタンで追加終了です。
  • 追加完了した[Environment]です。お疲れ様でした。これで無事設定完了となります。
<最終確認>
  • 全ての設定が問題なく行われた場合、Build Projectを行って見ます。下図のように、ナビゲーターで確認していますが、[bin]フォルダには.apkファイルが作成され、[libs][obj]には.soファイルが作成されているのが確認できます。
    コンソールにはC-Buildとしてコンパイルされていることが確認出来ますね。

お疲れ様でした。
これで、JavaやCソースを修正した後に一括ビルド後にエミュレータで確認することが出来るようになります。

2011年2月17日木曜日

Android JNI を Eclipse CDT でプロジェクト統合する
<ubuntu 10.10編 その1>

livedoor版に「サーバ管理者の戯言」としてblogを書いていましたが、半年以上放置した結果スパムコメント送信業者?と削除と追加のイタチごっこに疲れたので、blogspotに移行することにしました。移行といっても、古いデータを持ち込むことはしないので、旧サイトの内容がどうしても見たい方はそちらへ。orz

AndroidでJNIを開発しようとしていたのですが、ndk r4以降から大幅に変更されています。これらを含めた纏まった情報が無く、いろいろ参照しながら苦労したので備忘録として記載します。
その1ではAndroid SDK環境構築について記載します。といいますのも、JNIのJavaプロジェクトをCDTと統合しプロジェクトのビルド実行時に同時にコンパイルするため、SDKおよびNDK両方の環境が必要となるからです。

では、SDK構築からとなります。


<前提>
  • Ubuntu 10.10 で作業を行ったため、Ubuntu 10.10が利用できること。(笑)
  • Eclipseは標準的なaptまたはSynapticパッケージマネージャでインストールします。そのためEclipseは3.5.2。インストール対象はeclipse-platform,eclipse-jdt,eclipse-cdt,openjdk-6-jre

<Android SDKのインストール>
  • Download the Android SDKから「android-sdk_r09-linux_x86.tgz」を選択してダウンロードします。
  • ついでですが、Download the Android NDKから「android-ndk-r5b-linux-x86.tar.bz2」もダウンロードしておきましょう。
  • tgzとbz2を展開します。右クリックで[書庫マネージャで開く]を選択し、自分のホームに展開します。展開ディレクトリは好きな場所で結構なのですが、一般的には「/home/hogehoge」(ユーザ名hogehoge)の直下か、もう一階層掘って展開するのが一般的です。
    #2つとも展開します。コマンドラインで作業しても良いのですが、画像の方が見栄えがいいかと。
  • 環境変数を変更するので、「.bashrc」を修正します。
        $ vi .bashrc
  • 最後尾に以下の内容を記載しておきます。私の場合には「/home/hogehoge」直下に展開しましたので、この通りになります。あと、platform-toolsを追加しているのはadbの配置が変更されたためで、追加していると便利程度に考えてください。(笑)
  • export ANDROID_NDK_ROOT=$HOME/android-ndk-r5b
    export ANDROID_SDK_ROOT=$HOME/android-sdk-linux_x86
    export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_NDK_ROOT:$PATH
    export PATH=$ANDROID_SDK_ROOT/platform-tools:$PATH

  • 編集が完了したらviを終了「[esc]wqコマンド」で書き込み、sourceコマンドで反映させます。
        $ source .bashrc


<Eclipse ADTのインストール>
  • eclipseを起動します。その後、[Help]->[Install New Software...]を選択。

  • [Add]ボタンを押下します。

  • [Name]に「ADT Plugin for Eclipse」を入力し、[Location]に「https://dl-ssl.google.com/android/eclipse/」を入力して[OK]ボタンを押下します。

  • 全て選択して[Next]ボタンを押下し、後はAcceptやAccept Allで完了すれば終わりです。
  • 次に、[Windows]->[Preferrences]を選択します。

  • [SDK Location]にAndroid SDKを展開した場所を設定します。
  • [Windows]->[Android SDK and AVD Manager]を選択して以下の画面を起動します。
    Available Packagesの欄で好きな環境をダウンロードします。一般的には開発したい環境のみダウンロードすると、時間の節約にもなります。

  • 後はVirtual Devicesで利用したいエミュレータ環境を生成すると終了です。
ここまでで、取り敢えずは一般的なAndroid SDK環境は構築完了のはずです。その2は、単にJNI開発環境構築というかJava環境とCDT連携を記載する予定です。

うーん。ちょっと長くなりそうな気がするなぁ。Windows環境ではまだ連携環境を構築していないので、どうするかなぁ・・・