Qt for Android

久々におじさん大興奮です。

AndroidアプリがQtで書けるのよ。そらもうね。

とりあえずざっくり試す方法だけ書いておきますね。環境はkubuntu10.10でございます。


 

とりあえずこちらをざざっと見て頂いて

もしもEclipseでのAndroid開発環境が既に構成されているのであればそのまま流用できますんでおすすめです。

されてませんーって方は、まあ今後するかもしれないのであればこの機会にやっちまえ。色んなサイトで日本語でどうすればいいか説明されております。

あと、ndk必須。ndkは入れてないなーと言う方は貰ってきておいて下さい。

頂いてくるもの。

こちらが本体。そしてこちらがministroっつーAndroid向けQtをダウンロードしてくれる素晴らしいアプリ。実機やエミュレータで動かすにしてもAndroid向けQtをインストールする必要がありますから両方セットで。

用意が終わったら実行属性つけて起動。インストーラに従って叩き込みましょう。

そしておもむろに全裸になった後(靴下除く)、正座して”/opt/necessitas/QtCreator/bin/qtcreator”(標準)を叩きます。

Creatorきたこれ。

因みに既にCreator使ってて環境がまざっちゃうと困るよーと言う方も、とりあえず別環境として動くようです。安心ですね。

早速wktkしつつツール→オプションを叩くと、見慣れない「Android」の文字が。

ヤーッ!。

なにはともあれsdkとndkとtoolchainを指定してあげて下さい。antはapt-get installしてあれば空白でもおkです。

AVD Managerのところは1個用意しときましょう。Eclipseで使っていたものがあればそれでもいいかな。

次、Android用Qt4を使うように指定します。

ヤェーッ!。

いやっほう、これでとりあえずおkです。

早速なんかサンプルを読み込ませてコンパイルしてみましょう。どきどきですね。

Android向けQtを指定するのを忘れずに。

ビルド設定は特に触らなくてもいいかな。シャドウビルドだけ外してみます。

ターゲットはAndroid-8に。デフォでAndroid-3になってますがうまくコンパイルできず。

デプロイ設定は一番下のを選んで、ダウンロードしておいたministroのapkを指定してやりましょう。

さてビルド。

うまく通れば実行ボタンで仮想マシンまで起動します。ministroが動いて初回にめきめきとQtライブラリを拾ってきます。気長に待ちます。

因みに実機向けだとmarketに既にministro上がっているようで。

きたああーーー!!!。

因みに日本語は入力できません。残念。こんどコード覗いてみよう。


さてざっくり(ほんとざっくりだな)でしたが、要はこれQt向けのコードをネイティブでコンパイルしてライブラリ化しjni経由で起動してる様子なのですが、まあそう考えれば速度的には全く問題ないレベルなんじゃなかろうかと予想。まだあんま触ってないから分からないけどね。

気になるのはメモリの食い具合なんだけどね。とりあえず実機にもってった感想ではえらいことにはなってない様子ではあったけど…まだわかんないね。

UIはX版なのかな。Androidに合わせてってわけでは無い感じ。それでも、WindowsやX向けのQtのコードをAndroid向けにそのままコンパイルできるインパクトはでかいな。

nepomukの使い方

KDEを入れたらまずnepomukを止める!、なんて人もいるやも知れませんが、それはちょっと悲しいぜ。

nepomukを使うことでKDEはタグとかレーティングとかを手に入れることができます。しかもそれが、dolphinなんかでそのまま使えてしまう。

ただ、いまいち対応したソフトが少ないなーと言う気もします。ざっと見たところではdolphin、gwenviewとかでしょうか。ただ、やってることはKIO経由なので実は対応しているしていないに限らずKDEのアプリケーションなら全体的に使えんこともない、と言うことにもなりますな。

てなわけで、ざざっとコード的な話とか。

 

 


 

タグとかを付ける話から。

nepomuk自体は色々複雑なしくみだったりしよるんやも知れませんが、ファイルなんかに追加情報を付けるのは至って簡単です。

#include <KDE/Nepomuk/Resource>
#include <KDE/Nepomuk/Tag>
{
    Nepomuk::Resource r("/file/name.txt");
    Nepomuk::Tag tag("ぶにぶに");
    r.addTag(tag);
}

 

とまあ、こんな感じ。簡単です。タグ以外にもsetAnnotationやらsetRatingなんてのがあります。簡単ですよね?。

 


 

次。読み出し。

これも要は書き出しと同じことです。

 

#include <KDE/Nepomuk/Resource>
#include <KDE/Nepomuk/Tag>
{
    Nepomuk::Resource r("/file/name.txt");
    QListIterator<Nepomuk::Tag> tags(r.tags());
    while(tags.hasNext()) qDebug() << tags.next().genericLabel();
}

とまあ、こんな感じ。ファイルが特定されているのであればこうやって読み出したり書き込んだりできます。

 


 

ではファイルが特定されていない場合はどうなのか。

例えば「ぶにぶに」タグが付いているファイルどこにあるの?と言うのを探し出したいとか言う場合。ぶっちゃけこの用途が最も多いと思うのですが。

このページの「Query Examples」ってとこにいろいろと細かく書いてあるのですが、これだけ見ると「え?ややこしくね?」と言う話にもなろうかと。だがしかし、最後の方を見ていただければ。要はKIO経由なわけでございます。

実際にdolphin(konquerorでもいいよ)で「nepomuksearch:」から始まるURLを叩いてただければ同じことができるわけです。Nepomuk::Queryでそれら検索用のクエリを作って.toSearchUrl()で検索クエリを含むURLを出せば…と言う話。

だから最初に言った「KIO経由なのでKDEアプリケーションなら…」と言う話になるわけです。

試しにkwriteなんかのファイルを開くダイアログでファイル名なんかに「nepomuksearch://?query=hasTag:ぶにぶに」なんて叩いてやると、実はちゃんと「ぶにぶに」タグの付いたファイルリストが出ます。

…っと、query=でやるのは時代遅れで最近はsparqlっつーSQLみたいなのを使うのが主流のようですが。「nepomuksearch:/?sparql=select ?r where {?r nao:hasTag <nepomuk:/ぶにぶに>}」とかになるようです。

 


 

とまあ、意外に使うのは簡単だと思います。もしもKDEアプリケーションを作る予定があるのであれば、ちょっとこの辺も考慮してnepomuk対応を実装しちゃったりするとかっこいいんじゃないかな?なんて思う次第ですよ。

てか日本語の資料がほとんどないのよね。

 

 

近況

「来年はたくさん書くぞー」とか意気込んでいたのですが、結果がこれだよ。

と言うわけでちょっと懐かしめのタイトルで。

近況としては仕事しつつゲームしつつ個人的なプログラム組みつつ…って感じでございます。仕事はまあ生きるために必要で、ゲームはまあ生きるために必要d…まあ、必要で。

コード書きのほうは自分用だったり仕事で使えっかなー?的なものを個人用として組んでは捨てを繰り返してるような。公開して誰かに再利用されるようなものが全く無いのがなあ。

あとAndroid向けアプリ開発なんかもはじめてはいたりしますが、正直持ち歩いてうれしいアプリってのが思いつかんのよね。欲しいものは大概マーケット漁ればあるしなあ。

あと近況としては、TVを見るのを減らし(ってかアニメな)、まんがを読むのをちょっと減らし、ゲームの時間をちょっとっつ減らし、ネットのほうも少しずつマニアックなものを見るのを減らし、みたいなことを実行していっています。二十歳超えてヲタデビューした俺としてはですね、若かりし頃のきらきらした自分にちょっと懐かしさとかあこがれとかそう言うなんか幻覚を見てしまっているわけですよ。そう言った頃に、戻れるかどうかは別として戻る努力くらいしてみようかな的ななんかそんな感じなことです。

年末には健全な変態になってる予定です。

まあ、こんな感じです。あんま変わってないです。

こっちはあまり更新してないですがtwitterのほうではちょこちょこ余計なことを呟いています。生存確認的な何かです。