如何判斷是debug還是release


1.在ant中 使用BuildConfig類修改參數值

public final class BuildConfig {
  public static final boolean DEBUG = false;

...

}

2.如果想自定義debug,比如log

buildTypes {
    debug {
        buildConfigField "boolean","LOG_DEBUG","true"
    }
    release {
        buildConfigField "boolean","LOG_DEBUG","false"
    }
}

使用:BuildConfig.LOG_DEBUG

3.使用AndroidManifest.xml中的meta-data

<meta-data
    android:name="Logs.enable"
    android:value="${LogEnable}"
    />
然後在gradle中配置buildTypes;
buildTypes {
    debug {
        manifestPlaceholders = [LogEnable : true]
    }
    release {
        manifestPlaceholders = [LogEnable : false]
    }
}

最後在工程代碼中加載meta-data的數據

ApplicationInfo appInfo = null;
try {
    appInfo = this.getPackageManager()
                  .getApplicationInfo(getPackageName(),
                          PackageManager.GET_META_DATA);
   boolean enable=appInfo.metaData.getBoolean("Logs.enable");
    Log.d("MyApplication","Logs.enable = "+enable);
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

4.在AndroidManifest.xml中設置其debug屬性

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:debuggable="true">

&ApplicationInfo.FLAG_DEBUGGABLE

不推薦這種方法。最好還是由打包方式決定。


5.應用程序中來判斷

public static boolean isApkDebugable(Context context,String packageName) {
        try {
            PackageInfo pkginfo = context.getPackageManager().getPackageInfo(
                    packageName, 1);
            if (pkginfo != null ) {
                ApplicationInfo info= pkginfo.applicationInfo;
                return (info.flags&ApplicationInfo.FLAG_DEBUGGABLE)!=0;
            }
        } catch (Exception e) {
            
        }
        return false;
    }




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章