崩潰日誌上傳
❶ 如何獲得Android的崩潰日誌
已經做成sdk的形式,源碼已公開,源碼看不懂的請自行google。
如果想定製適應自己app的sdk請自行fork。
AndroidLogCollector
android
app崩潰日誌收集sdk 1.0
作者:賈博士
崩潰日誌收集方法:
1.LogCollector是lib包,在需要添加崩潰日誌sdk的工程中導入此包。
2.導入lib後,在自己的工程的AndroidManifest.xml文件中加入許可權:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
3.在自己的工程中重寫自己的application,在oncreate中加入
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);
PS:重寫自己的application記得在Manifest注冊
參數:
1.Context
2.String UPLOAD_URL ,上傳地址url,支持http和https方式,post方法。
3.HttpParameters params ,自定義的類,用於post上傳其他參數。
說明:
發生崩潰後,日誌會保存在 /data/data/{your package name}/files/ 目錄下
日誌只有一個文件,多條數據日誌保存
日誌文件上傳成功後會自動刪除,上傳不成功則不刪除
日誌格式可以根據自己的需求在源碼中改動
http的post傳的數據也可自行修改
參考代碼:
public class MyApplication extends Application {
//post method , upload logfile url,replace your site . support http or https
private static final String UPLOAD_URL = "http://xxxxxxxx";
@Override
public void onCreate() {
super.onCreate();
//upload logfile , post params.
HttpParameters params = new HttpParameters();
params.add("key1", "value1");
params.add("key2", "value2");
params.add("key3", "value3");
//.......
//replace your key and value;
boolean isDebug = true;
//set debug mode , you can see debug log , and also you can get logfile in sdcard;
LogCollector.setDebugMode(isDebug);
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);//params can be null
}
}
上傳日誌方法:
需要先在application中執行init,
然後在任何位置添加如下代碼:
LogCollector.upload(boolean isWifiOnly);
參數:
1.boolean isWifiOnly; true代表只在wifi情況下發送,false代表有網的情況下就發送(包括流量和wifi)
您可以在service,activity等位置的合適時機觸發,不會卡界面也不會影響性能。
參考代碼:
private void uploadLogFile(){
boolean isWifiOnly = true;//only wifi mode can upload
LogCollector.upload(isWifiOnly);//upload at the right time
}
調試:
在init之前調用
LogCollector.setDebugMode(boolean isDebug);
說明:
1.開啟調試後可以看到堆棧的log信息
2.同時可以在sd卡下的Android/data/{your package name}/Log/ 目錄下可以查看保存的崩潰log日誌
該目錄下的日誌不會自動刪除,請及時清空,避免佔用空間
❷ android怎樣實時上傳崩潰日誌到伺服器
讓系統處理崩潰,然後把錯誤日誌上傳到伺服器並且服務只能運行2秒鍾,如果2秒鍾錯誤日誌沒有上傳到伺服器,那麼這個錯誤信息就不要了。然後再停止服務,在服務銷毀的時候同時銷毀進程。
核心代碼:
public int onStartCommand(Intent intent, int flags, int startId) { stopDelayed = intent.getLongExtra("Delayed", 2000); PackageName = intent.getStringExtra("PackageName"); expection = intent.getStringExtra("exception"); try { //這里上傳崩潰日誌 } catch (java.lang.Exception e) { e.printStackTrace(); } handler.postDelayed(new Runnable() { @Override public void run() {/* Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName); startActivity(LaunchIntent);*/ KillSelfService.this.stopSelf(); //android.os.Process.killProcess(android.os.Process.myPid()); } }, stopDelayed); return super.onStartCommand(intent, flags, startId);}
@Overridepublic void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: "); android.os.Process.killProcess(android.os.Process.myPid());}
❸ iOS crash日誌查看
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="undefined" cid="n3" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">1、應用中有Bug。
2、Watchdog 超時機制
3、用戶強制退出
4、低內存終止
5、其他違反系統規則的操作,大部分是內存問題
發生崩潰,系統會生成一份崩潰日誌在本地,或者上傳 ITC</pre>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="rust" cid="n7" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">路徑:
ios 10之後:設置 -> 隱私 -> 分析 -> 數據分析
ios 10之前:設置 -> 隱私 -> 診斷與用量</pre>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="jsx" cid="n9" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">mac路徑:~/Library/Logs/CrashReporter/MobileDevice/
可以看到所有和該電腦同步過的設備的崩潰日誌(.crash文件)
為什麼有部分crash無法收集到?</pre>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="rust" cid="n12" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">xcode查看設備日誌並導出日誌
Window - Devices - 選擇設備 - 點擊View Device Logs -> All logs可以看到所有的崩潰日誌。</pre>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="undefined" cid="n14" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">1、三方:bugly、crashlytics
2、手動收集崩潰信息寫入文件,並在下次啟動時使用非同步線程將上面描述的捕獲到的崩潰上傳伺服器</pre>
參考: https://www.jianshu.com/p/5b132f0e31a3
可以通過devices獲取、以及organizer獲取兩種方式
❹ 蘋果手機崩潰日誌怎麼看
蘋果手機崩潰日誌怎麼看?在iPhone手機上的軟體發生閃退或開發iOS應用程序時出現的閃退,一般都會自己或系統生成崩潰日誌,那麼我們從哪裡以及怎麼獲取到崩潰日誌呢?
工具原料iPhone手機一台數據線一條Xcode開發工具(可選)
方法/步驟分步閱讀
1
/5
0.首先我們看看崩潰日誌一般會存放在哪個目錄。而由於iOS系統的沙盒機制,一般我們不能直接訪問它獲取,但可以有下面的幾種方法獲取。
2
/5
1.在iTunes Store上獲取。使用數據線連接手機和電腦,就可以從電腦的以下路徑找到崩潰日誌了。
macOS上:~/Library/Logs/CrashReporter/MobileDevice/< DEVICE_NAME \>
Windows上: C:/Users/< USERNAME > /AppDataRoamingApple//< DEVICE_NAME >
3
/5
2.如果你是開發者,可以從iTunes Connect上獲取。但前提需手機用戶打開設置->隱私->診斷與用量的開關。
4
/5
3.可以通過開發工具Xcode,數據線連接電腦獲取。通過在Xcode->Window->Devices,然後選中真機設備,點擊View Device Logs。等待掃描後獲取對應應用和日期的日誌。
5
/5
4.如果是應用開發者,自己代碼中記錄崩潰日誌,並上傳到伺服器,發生崩潰後從網站日誌管理中獲取對應的崩潰日誌即可。
注意事項
如果是在iTunes Connect獲取崩潰日誌,則需要用戶設置允許發送崩潰日誌。
自己開發的機制,發生崩潰後需要再次打開應用上傳日誌文件。
❺ WPS出現崩潰時上傳日誌並上傳文件,會泄露用戶隱私嗎
是真的,wps的雲服務和遠程服務功能是有一定安全措施的,可以放心使用