2012年5月3日木曜日

デバッグビルドとリリースビルドで処理を変える方法(2)

デバッグビルドとリリースビルドで処理を変える方法その2です。
以前に書いた方法は以下から。

デバッグビルドとリリースビルドで処理を変える方法
http://neta-abc.blogspot.jp/2012/02/blog-post.html

ADT 17(らしい)から/genの下にBuildConfig.javaが自動生成されるようになっています。

BuildConfig.java
/** Automatically generated file. DO NOT MODIFY */
package com.example.builconfigtest;

public final class BuildConfig {
    public final static boolean DEBUG = true;
}

このBuildConfig.DEBUGはリリースビルド時(Export Signed Application Package...)に自動でfalseになってくれる仕組みだそうです。

なので、これを利用してデバッグビルドとリリースビルドで処理を切り替えることが出来ます。

BuildConfigTestActivity.java
public class BuildConfigTestActivity extends Activity {

    private final String TAG = getClass().getSimpleName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        if (BuildConfig.DEBUG) {
            Log.e(TAG, "BuildConfig.DEBUG = true");
        } else {
            Log.e(TAG, "BuildConfig.DEBUG = false");
        }
    }
}

上記のコードでデバッグビルド/リリースビルド時にログが切り替わることを確認しています。

因みにWindows環境(のみ?)ではBuildConfig.DEBUGがリリースビルド時にfalseにならないバグがあるようです。
私の環境(Windows 7 64bit/Indigo/ADT 18)でも発生しています。
>Eclipseの[Project] -> [Build Automatically]を外すと回避できました。

Issue 27940: BuildConfig.DEBUG is "true" for exported application package
http://code.google.com/p/android/issues/detail?id=27940

0 件のコメント:

コメントを投稿