「 2013年11月 」一覧


最近のAndroid開発環境(NDK r9b)の構築


最近NDKのほうも更新が進んで r9b が出ているようです。
以前の状況と結構変わっているようなので再度セットアップしてみました。

googleからダウンロードしたら、前回ADT bundleのeclipseの場所に展開します。
sdkフォルダがあるところに、android-ndk-r9b として展開します。
そして、環境変数 NDKROOT を作成し、この場所をセットしておきます。
環境変数 PATH に、このパスを追加しておきます。
ユーザー環境変数PATHが存在しなければ、作成して%NDKROOT% と入力しておきます。

env-ndk-root

そして、eclipseを起動して、Window/Preferences を開いて、Android/NDK の項目を開きます。
ここに NDK Location とあるので、先ほどNDKを展開したパスを設定します。

ひとまず設定はこれでOKです。
続いてサンプルの動作を確認してみようと思います。

サンプルの動作確認

NDKの中にはsampleが入っているので、これをeclipseで読み込ませて、ビルド&実行をしてみたいとおもいます。実行できる環境(エミュレーターやデバイス)を準備しておいて下さい。

メニューFile/New/Otherを選び、Android Project from Existing Code を選びます。そしてNDKに含まれているsampleを指定します。ここでは定番のhello-jni サンプルを指定したとします。
Projects でtestsは今不要ということでアプリ本体だけ使うので、こちらだけにチェックを入れてプロジェクトを作成します。
また、自分はNDK展開先フォルダが汚れるのがいやなので、対象をコピーするように設定しました。これが Copy projects into workspace にチェックが入っている理由です。

import-project-ndk

これでプロジェクトを作成し、Java パースペクティブで開くとこのようになります。

hello-jni

コマンドプロンプトでこのプロジェクトのフォルダを開きます。上記の通りにインポート時にコピーしていれば自分のWorkspaceフォルダの中に HelloJni フォルダができていることとと思います。ここをコマンドプロンプトで開きます。
そして、ndk-build とタイプして実行します。これでC/C++コードのコンパイル&リンクが実行されます。
うまくいかない場合には、環境変数 NDKROOTやPathに設定したものを確認して下さい。また、コマンドプロンプトをスタートメニューから開きなおしてみて下さい.
ndk-build-result

そして、Eclipseで F5(Refresh)を押すと、HelloJniの中に obj,libsの項目が増えています。これを開いてみると、libhello-jni.so ができていることがこちらでも確認できます。

実行するには、プロジェクトを右クリックして Run As/Android Applicationを選びます。

・・・

しかし、現在の状態ではこんなエラーが発生しました。

Unable to execute dex: java.nio.BufferOverflowException.
 Check the Eclipse log for stack trace.
Conversion to Dalvik format failed: Unable to execute dex:
 java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

どうやら最新のSDKパッケージだとこのエラーが出るようです。
Android SDK Build-tools Rev 19でエラーが出るようで、これを 18.1.1 あたりに戻すことで回避できるとのことです。Android SDK Managerを開いて、18.1.1をインストールし、19を削除しておきます。

再度 Eclipseでメニューから Project/Cleanを実行します。
そして、Run As/Android Application で実行を行います。まだダメなようならばeclipseを一度終了し、再度eclipseを起動してリトライしてみて下さい。

自分の環境ではこれでHello-Jniが実機上で動作するところを確認しています。



GitLab 6.3


先日 RhodeCode Enterprise になっていて、GitLabのほうはどうだろうと調べてみました。こちらも GitLab Enterprise がありますが、こちらはCommunityEdition版も提供してくれており更新は続いています。ちょうど 6.3 が出たところだったので見てみました。

以前はできなかったパブリックなリポジトリを作ることができるようになっていました。自分がRhodeCode 推ししようとした際には、パブリックなリポジトリが作れることで決めた節もあったので、これで GitLab も検討できそうな感じです。このまま開発が継続されてくれれば、こちらのほうがよいですし。

(6.2でパブリックなリポジトリの機能が入っていたようです)

6.3 では Webインターフェース関連が改良されているようです。

個人的にはいつの間にか入っていた Git HTTP も相まって、(RhodeCode代替としては)これでいいんじゃないかと思っています。


RhodeCodeが様変わりしてた


RhodeCode が良さそうに思って以前に導入記事を書いてみましたが、久しぶりにどうなったかなと思って確認したところ、なんと色々と大きく変わっていました。

RhodeCode Enterprise というものになっていて、20ユーザーまではフリーで使えるという状態のようです。以前はそんな制約はなかったと思います。GPLv3 のライセンス下で配布されていたと思います。

検証当時は GitLab vs RhodeCode で、個人的には RhodeCode を推していこうと思っていたのに、この制限があるとチームで使う際には除外されていきそうです。残念。

追記

どうやら、1.7.1はGPLv3のままの提供、その後の新バージョン 2.x 系を RhodeCode Enterprise としてライセンス体系を変えたっぽいです。


NVIDIA ドライバを 331.65 へ更新


今までは 320.49 を使用していましたが、これ 331.65 へ更新してみました。手元のボードは GTX 650 Ti なので、これで OpenGL 4.4 の拡張がちょっとは使えるかと期待して更新を行った次第です。
あとは、Kepler世代のGPU内部には HWエンコーダーが入っていて、これ NVENC が使えるようになるかと思っての更新です。

続きを読む


CUDA 6発表


http://www.4gamer.net/games/076/G007660/20131115052/

ここの記事によると CUDA 6 が発表になったようです。
おお!と思ったのが、「統合メモリ」。これにより CPU, GPU 間でのメモリコピーが不要になるとのこと。
どのように実現できるのか興味あります。

AMDは Kaveri でCPU-GPU間のメモリ空間を統合するし、これに対する対抗に近いのかも。


C++で UTF-8文字リテラルを使いたい


VisualStudio 2010 環境限定ではあるけれど、ソースコードがBOM付UTF-8であれ、ShiftJISであれ、文字リテラルを UTF-8 で処理させて、実行体Exeの中に格納できる方法を発見しました。

このようなコードを作成してWindows日本語版の環境下でビルドした場合、その実行体の中に含まれる文字列は、Shift JIS (MS932) となってしまいます。 これはビルド設定の「文字セット」の設定とは無関係で、元のソースコードがどの文字エンコーディングを使っているかにも関係なく、ShiftJISとなってしまうようです。
この状態がちょっと都合が悪いことがあって、出来上がった実行体の中に UTF-8 で文字列で格納しておいてほしいというのが実現したいことです。

すなわち、上記の文字列 「あああ」をエディタで(ShiftJISやUTF-8など)で通常通りに入力し、それをUTF-8化したままで exe の中に格納しておく、ということがやりたいわけです。

続きを読む