ページ

2014/08/10

rdotm - Resource access code generator for Objective-C

|

Qiitaにも投稿しましたが
iOSアプリ開発でもAndroidのR.javaのような仕組みでリソースに安全にアクセスする仕組みを作りました。
rdotm - GitHub

R.mというファイルを自動生成し、XMLに定義した文字列を「文字列ではなくコードで」アクセスできるようにします。

“R.java iOS”などと検索すると、
以下のように海外でも探している人がいるようなので(3年前ですけどね…)
Equivalent to R in iOS - Stackoverflow
試しに英語でも書いておこうと思います。


Recently, I developed the tool rdotm(R.m) for iOS app development.

What’s this tool?

rdotm(R.m) is the Objective-C resource definition generator like Android app’s R.java.
See the following demo especially auto-completion of string_*.

Demo

2014/05/18

Objective-Cコードのフォーマットチェック

Objective-CにはLintツールとして既にOCLintがあるが、
OS Xでなくても手軽にチェックできる仕組みが
欲しいと考えて作ってみた。
fint

以前にRun Scriptを利用して簡単なチェックができる
というエントリを書いたが、これをツールとして整備したもの。

例えば以下のように、普通のビルドエラーと同じように表示できる。

enter image description here

ちなみにツールはGo言語製。
Go言語環境をセットアップしてあれば、以下でインストールできる。

go get github.com/ksoichiro/fint

lint用のTARGETを追加し、Build Phaseを追加してRun Scriptにfintを
呼び出す設定を記述する。
以下は、設定例。

enter image description here

コマンドラインからも実行可能。

enter image description here

2014/05/11

Android Gradle PluginでJaCoCoを有効にしてテストするとjava.lang.VerifyError発生 (2)

|

Android Gradle PluginでJaCoCoを使ったカバレッジ計測を試したが
java.lang.VerifyErrorが発生したというエントリを書いた。

どうやらこの影響が及ぶのはリフレクションだけではないらしく、
通常のIntentによる起動が失敗した。
以下のようなパターンで、testCoverageEnabled = trueとなった
ビルドでインストールしたアプリがjava.lang.VerifyErrorによりクラッシュした。

まずAndroidManifest.xml。
途中は省略するが、トップ画面からメニューを開き
「About」の項目をタップするとAboutActivityが開き
アプリの概要が表示される、というもの。

<application
:
        <activity
                android:name=".AboutActivity"
                android:label="@string/title_activity_about" />
</application>

トップ画面のMainActivityでは以下のように書いている。

    @Override
    public boolean onOptionsItemSelected(final MenuItem menu) {
        int id = menu.getItemId();
        if (id == R.id.menu_about) {
            startActivity(new Intent(getApplicationContext(),
                AboutActivity.class));
            return true;
        }
        return false;
    }

これが、通常のビルドなら問題なかったが上記の通り
カバレッジ計測を有効にしたら失敗した。
(自動テストでなく手動で動かしても同様)

実際のプロジェクトで利用するにはまだ問題がありそうだ。。。

AndroidライブラリSimpleAlertDialog

|

少し前に作ったものの、紹介エントリを書いていなかったことに気づき今更ながら書いてみる。。。
SimpleAlertDialog-for-Androidという、
Androidでダイアログを簡単に作成できるライブラリを公開しています。
SimpleAlertDialog-for-Android

この手のライブラリは色々あるが、特長は以下の通り(READMEから抜粋)。

  • APIレベル4 (Android 1.6 Donut)からレベル19 (Android 4.4 KitKat) で利用可能です。
  • Holoスタイルのダイアログを全てのバージョンで使えます。
  • AlertDialog.Builderのようにシンプルなインタフェースです。
  • 基本的なイベントをハンドリングするコールバックが用意してあります。
  • ダイアログのライフサイクルは、親となるActivityやFragmentと同期しているため、IllegalStateExceptionに悩まされることはありません。
  • APIレベル11以上での通常のActivityと、android-support-v4ライブラリのFragmentActivityの両方をサポートしています。

デモアプリのダウンロードはこちらから

Android Gradle PluginでJaCoCoを有効にしてテストするとjava.lang.VerifyError発生

AndroidFormEnhancerは、Eclipseでの利用も可能にしているものの
基本的にはAndroid Studioで開発し、Gradleでビルドしている。
テストカバレッジを上げるために少しでも多くのテストを書こうとしているが
connectedAndroidTestタスクを実行しているときに
特定のクラスでjava.lang.VerifyErrorが発生する。
(未解決です)

com.androidformenhancer.helper.ActivityFormHelperTest > testInit[test(AVD) - 4.2.2] FAILED
java.lang.VerifyError: com/androidformenhancer/internal/ValidationManager
at com.androidformenhancer.helper.FormHelper.setValidationManager(FormHelper.java:356)
:library:connectedAndroidTest FAILED

FAILURE: Build failed with an exception.

2014/05/10

android update sdkのfilterで指定できる項目名の確認方法

|

Travis CIでビルドする場合などでは
コマンドラインでAndroid SDKをアップデートする必要がある。
この場合、

android update sdk --filter platform-tools

などとすると、必要な項目だけをフィルタリングしてインストールすることができる。

これまで、filterに使える名前として、ブログなどで使われている例を
そのまま試していたものの、新しい項目をインストールしたくなった場合
他に何の項目が使えるのかが分からず
.travis.ymlに何と書いてよいか分からず困った。

これを解決するには、以下で確認する。

android list sdk --all --extended

StackEditからのBlogger投稿でラベルを指定

|

StackEditではFront-matterが使えるということで、以下のようにすればBloggerへラベル付きで投稿できる(内容は前のエントリの冒頭)。

---
tags: ["Android", "Gradle", "Android Studio"]
---

Android Gradle Pluginでは、`sourceSets`として以下のようなものが指定できる。