يعد التصحيح خطوة مهمة في تطوير البرمجيات. تتيح لك إصلاحات البحث والأخطاء تطوير منتجات عالية الجودة.
في هذه المقالة ، أريد أن أتحدث عن تصحيح أخطاء تطبيقات Android تمامًا. يوفر لنا Android Studio العديد من أدوات التنميط ، مثل:
- logcat هي أداة لعرض سجلات التطبيق ، بما في ذلك استثناءات الأعطال. يمكن استخدامه في Android Studio وفي المحطة ، عبر ADB ؛
- يعد Android Profiler أداة قوية تسمح لك بعرض جميع طلبات الشبكة ووحدة المعالجة المركزية والذاكرة واستخدام البطارية.
هناك أيضًا العديد من حلول الجهات الخارجية التي تسمح لك بعرض حركة مرور الشبكة وقواعد البيانات والتفضيلات المشتركة وما إلى ذلك.
كل هذه الأدوات لها مزايا وعيوب. تشمل سلبياتهم ما يلي:
- العديد من التبعيات للأدوات المختلفة ؛
- تعقيد الاستخدام - كقاعدة ، تركز جميع الأدوات على المطورين وغير مريح لأعضاء الفريق الآخرين ، على سبيل المثال ، المختبرين أو المحللين أو المطورين الخلفيين. عادة ، يجب على الأخير سحب مطوري Android لعرض أي سجلات ؛
- اتصال إلزامي للهاتف بالكمبيوتر ، على سبيل المثال ، عبر كابل USB.
في الوقت الحالي ، لم أجد حلًا واحدًا من شأنه دمج أدوات تصحيح الأخطاء المختلفة والقضاء على المشكلات المذكورة أعلاه. لذلك ، قمت بتطوير الحل الخاص بي.
المصحح البعيد الروبوت
حلّي سهل الاستخدام للغاية ، لأنه يسمح لك بتصحيح التطبيق مباشرة في المستعرض ، دون توصيل جهاز Android بالكمبيوتر. يتضمن هذا الحل أربعة أقسام لتصحيح الأخطاء:
- التسجيل - عرض سجلات التطبيق ، بما في ذلك الأعطال ؛
- قاعدة البيانات - عرض وتحرير السجلات في قاعدة البيانات ؛
- الشبكة - عرض جميع طلبات الشبكة والاستجابات بتنسيق مناسب ؛
- ؛ SharedPreferences - عرض وتحرير بيانات SharedPreferences.
العمل مع المصحح
للعمل مع المصحح ، تحتاج إلى القيام بما يلي:
- ربط وتهيئة المكتبة ؛
- بدء تطبيق؛
- ,
http://xxx.xxx.x.xxx:8080
. , (Wi-Fi LAN) Android ; - . .
:
Logging

Database

Network

AndroidRemoteDebugger.init(applicationContext)
. AndroidRemoteDebugger.Builder
:
AndroidRemoteDebugger.init(
new AndroidRemoteDebugger.Builder(applicationContext)
.enabled(boolean)
.disableInternalLogging()
.disableJsonPrettyPrint()
.disableNotifications()
.excludeUncaughtException()
.port(int)
.enableDuplicateLogging()
.enableDuplicateLogging(new Logger() {
@Override
public void log(int priority, String tag, String msg, Throwable th) {
}
})
.build()
);
. - NanoHTTPD. . , , , 8080. . AndroidRemoteDebugger.Builder
.
Logging
. , . , . .
AndroidRemoteDebugger.Log
. . . , Logging . .
: AndroidRemoteDebugger.Log.d("tag", "message")
.
Timber ( Jake Wharton), :
class AndroidRemoteDebuggerTree extends Timber.Tree {
@Override
protected void log(int priority, @Nullable String tag, @NotNull String message, @Nullable Throwable t) {
AndroidRemoteDebugger.Log.log(priority, tag, message, t);
}
}
...
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Timber.plant(new Timber.DebugTree(), new AndroidRemoteDebuggerTree());
}
}
Network
Network . . . Logging. HTTP . , . Logging, .
OkHttp3 NetLoggingInterceptor. , .
:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new NetLoggingInterceptor())
.build();
Database
. . . 15 . , , . sql-.
SharedPreferences
SharedPreferences. , , . SharedPreferences . , .
Android Remote Debugger
build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
build.gradle :
dependencies {
implementation 'com.github.zerobranch:android-remote-debugger:1.0.0'
}
Android Remote Debugger:
- ;
- يتضمن العديد من أدوات التصحيح في وقت واحد ؛
- لا تركز فقط على المطورين ؛
- لا يتطلب توصيل جهاز Android بجهاز كمبيوتر للتشغيل ؛
- سهل الاستخدام.
جيثب
يمكن العثور على تعليمات تفصيلية حول عمل المكتبة وتوصيلها على GitHub