dot42 - Xamarin じゃない C# for Android
明後日からテストです。今日から本気出す予定(現在 23 時)です。
今日は面白そうなものを見つけてきたので紹介。
Use .NET Framework API
The most common part of the .NET Framework API is supported.
.NET Framework types compile to a minimum amount of
DEX code that invokes the Android framework.https://www.dot42.com/100% Android - No Runtime
Your C# code compiles to Android deployable code (DEX)
without requiring a runtime such as Mono.
こいつは頭がイカれてやがるぜ
どういうことなの
上の紹介文の通りですが、 Mono みたいな JIT コンパイラによって実行するのではなく C# を dex(Android 向けバイトコード)に直接コンパイルして実行してしまおうなどという頭のおかしいプロジェクトです。
でも、お高いんでしょう?
個人利用・無料でのストア公開なら無料、それ以外なら 1 人 399USD がメジャーバージョンごとにかかります。
ダウンロード
https://www.dot42.com/download.aspx で名前とメールアドレスを入力すればダウンロードできます。その後メールが届くので、インストール中にメールをチェックしてアクティベーションキーを取得してください。
インストール
Dot42 のインストール終わらないからギターやります
— 悟り和イスキー膳 (@azyobuzin) December 3, 2014
終わらない http://t.co/l5yyR3ocw9
— 悟り和イスキー膳 (@azyobuzin) December 3, 2014
Dot42 なんか罠ありそうだなぁと思ってたけど 1 時間経ってもインストール終わらないとは思ってなかった
— 悟り和イスキー膳 (@azyobuzin) December 3, 2014
1 時間以上この調子 http://t.co/iIo4B6xRzq
— 悟り和イスキー膳 (@azyobuzin) December 3, 2014
ムカついたから画面閉じたら進んだ 1 時間返せ
— 悟り和イスキー膳 (@azyobuzin) December 3, 2014
ご注意ください。
Hello, world
Visual Studio 2013 integration をインストールするとこんな感じのプロジェクトテンプレートができます
プロジェクトを作成すると Android プロジェクトの設定を行います。この画面 Java っぽい。
Certificate 欄に apk 署名用の秘密鍵をいれるみたいですが、 Eclipse でいつも使ってるファイルを入れてみても Incorrect password とか怒られたのでメダルみたいなボタンを押して新しく作りました。
で、生成される Hello, world コードがこちら。
using System; using Android.App; using Android.Os; using Android.Widget; using Dot42; using Dot42.Manifest; [assembly: Application("dot42Application2")] namespace dot42Application2 { [Activity] public class MainActivity : Activity { protected override void OnCreate(Bundle savedInstance) { base.OnCreate(savedInstance); SetContentView(R.Layouts.MainLayout); } } }
これをビルドすると、なんと驚きの 10KB の apk が生成されます。というのもこのコードではまったく .NET のライブラリに依存していないので、書いたコード以外に追加されるのは多少のヘルパーのみです。ついでに Xamarin.Android のプロジェクトをなにも弄らずビルドすると 3.3MB になります。
では、 .NET のライブラリを使えば一気にサイズ増えるだろ~などと考えつつ、 List<T>
で ArrayAdapter<T>
みたいなものを作って ListView
にぶち込んでみるか~とやってみた結果… 13KB 。。。やばいぞこれ。
他にも
デザイナーこそないですが、レイアウトの XML では IntelliSense が使えるし、メニューの XML ではデザイナーがあります。
あと、 Java のライブラリで実装されるものは極力そっちが使われる仕組みになっている上に、使われていないメンバーはコンパイルされないのでかなりサイズを削ることができます。
残念ポイント
普通の .NET ライブラリを参照に入れられない
試しに CoreTweet 入れようとしたら拒否られた。
abstract メンバーが virtual 扱い
実行時エラーになるまで気づかない。