在我的Android應用程序中,我廣泛使用Log.i
,Log.e
。在生產中保持Log.i安全嗎?
在這些命令上,我通常會通過SQLite查詢或與我的應用程序通信的http rest url。
我的問題是:應用程序到達Play商店時是否安全地保留這些日誌?如果用戶使用他的計算機上連接的設備運行該應用程序,他將能夠查看他的LogCat上的日誌消息?
在我的Android應用程序中,我廣泛使用Log.i
,Log.e
。在生產中保持Log.i安全嗎?
在這些命令上,我通常會通過SQLite查詢或與我的應用程序通信的http rest url。
我的問題是:應用程序到達Play商店時是否安全地保留這些日誌?如果用戶使用他的計算機上連接的設備運行該應用程序,他將能夠查看他的LogCat上的日誌消息?
如果用戶將設備連接到計算機和讀取logcat的,他們可以看到你的應用程序生成的日誌信息。
可能的解決方案是使用Proguard來刪除(自動)所有日誌消息。
這個答案更多信息:How to configure proguard to ONLY remove android logging calls
希望它能幫助。
沒有檢查Proguard。我會試一試。在成功之後,我會接受這個答案:) – antoniom
不,在生產中保留日誌方法是不安全的。這些日誌可用於跟蹤Android中的不同回調,如果您在其中顯示數據庫記錄,則必須在發佈您的應用程序之前刪除這些記錄。
而且您不必在項目中逐個刪除日誌回調。您可以使用Proguard自動刪除Log方法,只需在項目根目錄中寫入proguard-project.txt
中的幾行即可。
爲什麼不安全?我的意思是,如果你的字節碼在其他人的計算機上運行,那麼你必須假設沒有任何東西可以隱藏起來。 –
是的,用戶將能夠讀取這些日誌文件。它是'安全'嗎? 取決於。你的休息電話或sqlite查詢是祕密嗎?例如,所有的網絡通信都可以用wireshark讀取。
當我發佈我的應用程序時,我所做的是:我使用方法i,d,e等創建自己的Log類,並使用此Log類代替Android,因爲那時我可以使用簡單開關,如boolean debug = true
我寫到LogCat或不寫。這樣我可以將所有日誌語句留在應用程序中。 當你寫你自己的日誌類,使用它在你的應用程序,你可以簡單地用
import your.package.Log;
與Eclipse替換所有
import android.util.Log;
。
你的建議是我所想的,以防萬一它不安全。然而,sabadow和Shajeel Afzal建議的proguard似乎更吸引人 – antoniom
記錄是開發人員使用的非常方便的調試和診斷技術。使用作爲Android SDK一部分提供的日誌記錄類將關於應用程序的重要信息記錄到LogCat中,但確保在發佈之前檢查應用程序的日誌記錄實現,因爲日誌記錄具有性能缺陷。
在發佈您的應用程序之前仔細查看您的日誌,以免泄露任何機密數據。
只要您的應用程序處於測試模式,記錄就非常重要。日誌將爲您提供當前設備上應用程序的當前狀態和場景。所以每當你更新你的應用程序時它都非常有幫助。
有時Google Play會拒絕您的應用程序,如果他們發現您的日誌記錄機制違反了規則。
如果你離開它當然用戶將能夠看到它。 – Blackbelt
是的,用戶可以在logcat – sabadow
中讀取這條日誌消息......這兩個問題在Play商店中都是安全的,是的,能夠看到 –