登錄J2ME
回答
如果您使用的預處理和混淆使用ProGuard,那麼你可以有一個簡單的日誌類。
public class Log {
public static void debug(final String message) {
//#if !release.build
System.out.println(message);
//#endif
}
}
或者做記錄你需要的地方。現在,如果release.build屬性設置爲true,則此代碼將被註釋掉,這將導致一個空方法。 Proguard將刪除空方法的所有用法 - 實際上,發佈版本將刪除所有調試消息。
編輯:
關於它的庫級別(我工作的測繪J2ME庫)我有,也許發現了一個更好的解決方案的思考。
public class Log {
private static boolean showDebug;
public static void debug(final String message) {
if (showDebug) {
System.out.println(message);
}
}
public static void setShowDebug(final boolean show) {
showDebug = show;
}
}
這樣最終開發可以使庫內他/她感興趣的日誌級別。如果沒有將被啓用,所有日誌記錄代碼將在最終產品混淆被刪除。甜:)
/JaanusSiim
我已將MIDPLogger用於生產應用程序中的某些可接受的級別,但我發現它在集成到應用程序中之後具有更多用途,而不是作爲套件中的另一個MIDlet等。我也發現了MicroLog,但沒有用過它的任何細節。
MicroLog肯定會下注。它是Log4j等Java ME(J2ME)的一個小型日誌記錄庫。它支持記錄到控制檯,文件,RecordStore,Canvas,表單,藍牙,串口(藍牙,IR,USB),Socket(包括SSL),UDP,Syslog,MMS,SMS,電子郵件或Amazon S3 。
具有由Symbian修改的太陽虛擬機中的Series60和UIQ手機本身擁有標準輸出重定向。
不僅可以捕獲System.out,而且Throwable.printStackTrace()也可以工作。在早期的手機上,您需要編寫一個掛鉤到標準庫服務器進程的C++應用程序。 Symbian製作了可以將VM標準輸出捕獲到控制檯或文件的重定向器應用程序。
在新手機上,引入了一個「redirect://」GCF協議,可以將VM標準輸出讀取到Java byte []或String對象中(您希望在單獨的MIDlet中執行該操作)和重定向器應用程序在Java中被重寫。
在Series60 3rd Edition Feature Pack 2手機(及更高版本)中使用的最新J9 VM上,您可能需要嘗試使用「redirect:// test」。
可以使用-assumenosideaffects中的ProGuard到completley刪除您的日誌類:
-assumenosideeffects public class logger.Logger {*;}
而不是必須預處理。
我寫了一個字節碼優化,因爲類文件的格式,你可以指向類名&功能的UTF編碼,這可以讓你的輸出日誌與MyClass.someFunc()(您可以處理的簽名,如果你想獲取類型),它允許你做類似C風格的調試使用LINE & FILE宏。
使用記錄器類的條件編譯並不能解決完全刪除日誌語句的問題,因爲您經常記錄的不僅僅是一個簡單的字符串。您將查找變量值,然後將它們組合爲字符串,例如:WhateverLog.log(「Loaded」+ someclass.size()+「foos」)。
現在,如果您只留下WhateverLog.log的主體(如接受的解決方案所示),您仍然會留下大量不必要的代碼,包括字符串連接(並因此創建StringBuffer)。這就是爲什麼你最好使用像proguard這樣的字節碼後處理工具(已經提到過)。 Proguard的-assumenosideeffects將允許其優化器不僅刪除日誌記錄,而且還刪除所有隻有日誌記錄調用纔會使用的代碼。
J2ME的LWUIT框架提供了Logging表單,它可以有一個日誌裏面的語句。您可以在您認爲可能產生異常的每個地方添加日誌。
示例:Log.getInstance()。showLog(); 通過添加上述行,您可以跟蹤J2ME設備中的日誌記錄。
- 1. 將textfield值設置爲null,用於登錄j2me程序
- 2. 列出所有記錄j2me
- 3. j2me中的通話記錄
- 4. j2me中的記錄存儲
- 5. 更新記錄在記錄庫j2me
- 6. 「登錄」 或 「登錄」 或 「登錄」
- 7. 登錄到NLog登錄Hangfire.io
- 8. 登錄facebook登錄鏈接
- 9. CAKEPHP登錄未登錄
- 10. 單點登錄登錄
- 11. 登錄登錄Windows 10
- 12. ASP.NET登錄嘗試登錄?
- 13. 這不是登錄登錄?
- 14. 立即登錄Android登錄
- 15. 單點登錄登錄
- 16. Facebook無登錄登錄
- 17. Django登錄/發佈登錄
- 18. php登錄和Facebook登錄
- 19. 登錄登入jhipster
- 20. 使用Facebook登錄用戶登錄Facebook登錄API
- 21. 登錄管理器的登錄後Facebook登錄無法工作
- 22. 您尚未登錄:您尚未登錄。請登錄並重試
- 23. Facebook的登錄不不解僱登錄對話框登錄後
- 24. 當登錄時登錄隱藏,登錄時隱藏註銷
- 25. Bigcommerce客戶登錄API(單點登錄)無效登錄問題
- 26. Json登錄多個用戶登錄在一個登錄頁面
- 27. 訪問從登錄控制inasp.net登錄名和登錄狀態
- 28. 用CURL登錄,成功登錄後,尚未登錄
- 29. 登錄前登錄表單認證登錄頁面
- 30. 在Swift 3中自動登錄後登錄登錄
第二個版本中的代碼會被刪除嗎?您已刪除預處理命令 – Casebash 2010-04-16 02:12:32