DDMS適用於調試,但是當您準備發佈應用程序時,當USB連接時它將將所有此信號發送到用戶的計算機似乎過分了。Android - 是否可以將輸出抑制爲ddms
是否可以抑制輸出到ddms?如果是這樣,怎麼樣?
DDMS適用於調試,但是當您準備發佈應用程序時,當USB連接時它將將所有此信號發送到用戶的計算機似乎過分了。Android - 是否可以將輸出抑制爲ddms
是否可以抑制輸出到ddms?如果是這樣,怎麼樣?
以下是我所做的。它可能不是因爲你期待什麼優雅,但它的工作原理:
public static final boolean DEBUG_ON = true;
//Log something
if (!DEBUG_ON) Log.d("tag", "my log message");
然後,只需改變DEBUG_ON的價值,當你釋放你的應用程序。
,如果你不使用proguard的,你必須管理的登錄自己和清單文件使dubuggable假
<application
android:name="MyApplication"
android:icon="@drawable/gift"
android:label="@string/app_name" android:debuggable="@bool/build_log">
這裏我的自定義日誌類
public class Lol {
public static final boolean ENABLE_LOG = true & MyApplication.sDebug;
private static final boolean DEBUG = true & ENABLE_LOG;
private static final boolean VERBOSE = true & ENABLE_LOG;
private static final boolean TEMP = true & ENABLE_LOG;
private static final boolean WARNING = true & ENABLE_LOG;
private static final boolean INFO = true & ENABLE_LOG;
private static final boolean ERROR = true & ENABLE_LOG;
public static void obvious(String tag, String msg) {
if (DEBUG) {
msg = "*********************************\n" + msg
+ "\n*********************************";
Log.d(tag, msg);
}
}
public static void d(String tag, String msg) {
if (DEBUG)
Log.d(tag, msg);
}
public static void d(boolean bool, String tag, String msg) {
if (TEMP&bool)
Log.d(tag, msg);
}
public static void i(String tag, String msg) {
if (INFO)
Log.i(tag, msg);
}
public static void e(String tag, String msg) {
if (ERROR)
Log.e(tag, msg);
}
public static void e(boolean bool, String tag, String msg) {
if (TEMP&bool)
Log.e(tag, msg);
}
public static void v(String tag, String msg) {
if (VERBOSE)
Log.v(tag, msg);
}
public static void w(String tag, String msg) {
if (WARNING)
Log.w(tag, msg);
}
public static String getStackTraceString(Exception e) {
return Log.getStackTraceString(e);
}
public static void w(String tag, String msg, Exception e) {
if (WARNING)
Log.w(tag, msg,e);
}
}
請記住,並非您在DDMS中看到的所有內容都來自您的應用程序。在幕後DDMS實際上是使用adb
在設備上運行logcat
來輸出所有應用程序發送日誌記錄信息的系統日誌。當連接到adb並運行logcat時,此信息僅通過USB發送。對於大多數用戶來說,這通常不會被輸出。雖然你應該清理你的應用程序中的調試輸出爲最小化,但不需要擔心其他輸出。
ADT現在通常會爲您在清單中正確設置可調試屬性,假設您根本沒有將它添加到清單中。清單調試屬性控制着調試工具(DDMS)是否能夠連接到正在運行的進程。
使用編譯時間標誌來啓用或禁用調試的另一種方法是使用Log.isLoggable (String tag, int level)
api與adb shell setprop
結合使用這雖然有點棘手。
http://stackoverflow.com/questions/5553146/disable-logcat-output-completely-in-release-android-app – Emran 2012-03-16 17:11:56