Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn And...

1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn Android application debugging from the scratch - track apps' behaviors

2020/2/20-21で開催されるはずだったDroidKaigi 2020で登壇するはずだったAndroidのデバッグ手法について紹介するスライドです。3月中にセッション録画を行い、DroidKaigi公式YouTubeチャンネルにて公開していただく予定です。

Yoshihiro WADA

February 20, 2020
Tweet

More Decks by Yoshihiro WADA

Other Decks in Programming

Transcript

  1. ˖ ؒطؘٕ٦嶊顤ח䕦갟ׅ׷ءأذي؎كٝز׾涪鋅דֹ׷ &OFSHZ1SPMFSءأذي؎كٝزך邌爙 !74 8BLFMPDL "MBSN +PC ⡘縧䞔㜠ؙٔؒأز أٔ٦ف朐䡾חז׵׆ח 歗꬗$16׾0/׃竲ֽ׷

    㹀劍涸ח㹋遤ׁ׸׷ غحؙؚٓٝسةأؙ 䭷㹀勴⟝ד㹋遤ׁ׸׷ غحؙؚٓؐٝسةأؙ (14إٝ؟٦瘝׾欽ְ׋ ⡘縧䞔㜠ך庠㹀ؙٔؒأز
  2. BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ׷ !109 BOESPJEVUJM-PHדךؚٗ⳿⸂ Log.v("TAG", "Verbose log output") Log.d("TAG", "Debug log

    output") Log.i("TAG", "Info log output") Log.w("TAG", "Warn log output") Log.e("TAG", "Error log output")
  3. BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ׷ !110 5JNCFSדךؚٗ⳿⸂ Timber.v("Verbose timber output") Timber.d("Debug timber output") Timber.i("Info

    timber output") Timber.w("Warn timber output") Timber.e("Error timber output") Timber.tag("TAG").d("Debug timber output")
  4. BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ׷ !111 5JNCFSדךؚٗ⳿⸂ Timber.v("Verbose timber output") Timber.d("Debug timber output") Timber.i("Info

    timber output") Timber.w("Warn timber output") Timber.e("Error timber output") Timber.tag("TAG").d("Debug timber output") 5"(כ㹋遤ؙٓأせחז׷
  5. BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ׷ !112 5JNCFSדךؚٗ⳿⸂ Timber.v("Verbose timber output") Timber.d("Debug timber output") Timber.i("Info

    timber output") Timber.w("Warn timber output") Timber.e("Error timber output") Timber.tag("TAG").d("Debug timber output") 5"(׾䭷㹀ׅ׷ֿה׮דֹ׷
  6. BOESPJEVUJMMPHWT5JNCFS !114 BOESPJEVUJMMPH 5JNCFS 5"(ך䭷㹀 䗳銲 䗳銲搀ְ鏣㹀〳 ٔٔ٦أדך㼎䘔 QSPHVBSE瘝ד嶊⿠ׅ׷ 5SFF׾䊴׃剏ִ׷

    ؚٗךꥷך 䮙⹛ך㢌刿 ♶〳腉 〳腉ؕأةي5SFF ػؿؓ٦وٝأ⡚♴װ䞔㜠怩ְִך⽬ꤹ׾㔐鼘ׅ׷湡涸
  7. ؕأةي5SFFדؚٗךꥷך䮙⹛׾㢌ִ׷ !116 class CrashReportingTree : Timber.Tree() { override fun log(

    priority: Int, tag: String?, message: String, t: Throwable? ) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { return } // Do crash reporting... } } ؙٓحءُٖه٦ز׾遤ֲ5SFF
  8. ؕأةي5SFFדؚٗךꥷך䮙⹛׾㢌ִ׷ !117 class CrashReportingTree : Timber.Tree() { override fun log(

    priority: Int, tag: String?, message: String, t: Throwable? ) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { return } // Do crash reporting... } } ؙٓحءُٖه٦ز׾遤ֲ5SFF 5SFFؙٓأ׾竰䪫׃׋ؙٓأ׾⡲׷
  9. ؕأةي5SFFדؚٗךꥷך䮙⹛׾㢌ִ׷ !118 class CrashReportingTree : Timber.Tree() { override fun log(

    priority: Int, tag: String?, message: String, t: Throwable? ) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { return } // Do crash reporting... } } ؙٓحءُٖه٦ز׾遤ֲ5SFF MPHًاحسך ؔ٦غ٦ٓ؎سד 䮙⹛׾㹀纏
  10. ؕأةي5SFFדؚٗךꥷך䮙⹛׾㢌ִ׷ !119 override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) {

    Timber.plant(Timber.DebugTree()) } else { Timber.plant(CrashReportingTree()) } } "QQMJDBUJPOPO$SFBUF
  11. ؕأةي5SFFדؚٗךꥷך䮙⹛׾㢌ִ׷ !120 override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) {

    Timber.plant(Timber.DebugTree()) } else { Timber.plant(CrashReportingTree()) } } "QQMJDBUJPOPO$SFBUF #VJME$POHד㙵׭鴥׬5SFF׾㢌ִ׷
  12. -PHDBUה&WBMVBUFBOE-PHך麩ְ !128 -PHDBU &WBMVBUFBOE-PH ؚٗ鷄⸇儗 ךⱄؽٕس 䗳銲 䗳銲搀ְ ؚٗ׾⳿ׅ׋׭ ח䗳銲ז橆㞮

    "%# رغحؖ٦ך،ةحث ؘؚٗٝه؎ٝز ؝٦س♳ח婍׷ ؝٦س♳ח婍׵זְ "1*ؒٓ٦ךؚٗ瘝ծ䌢ח邌爙׃׋ְ הֹח⢪ֲךָ葺ׁ׉ֲ
  13. -PHDBUה&WBMVBUFBOE-PHך麩ְ !129 -PHDBU &WBMVBUFBOE-PH ؚٗ鷄⸇儗 ךⱄؽٕس 䗳銲 䗳銲搀ְ ؚٗ׾⳿ׅ׋׭ ח䗳銲ז橆㞮

    "%# رغحؖ٦ך،ةحث ؘؚٗٝه؎ٝز ؝٦س♳ח婍׷ ؝٦س♳ח婍׵זְ 然钠瘝ծ♧儗涸חؚٗ׾⳿׃׋ְ 㜥さח⢪ֲךָ葺ׁ׉ֲ
  14. /FUXPSL1SPMFSWT4UFUIP'MJQQFS !142 /FUXPSL1SPMFS 4UFUIP'MJQQFS 穈׫鴥׬׋׭ך㹋鄲 ♶銲 䗳銲 涪欰׃׋鸐⥋ꆀך鎘庠 ؚٓؿד鋅׸׷ 筨鎘ָ鋅׸׷

    鸐⥋ך鎘庠ך➬倯 儗꟦眔㔲ד䭷㹀 䌢ח崧׸גֻ׷ 鸐⥋׾䭪ִ׷״ֲחׅ׷䗳銲ָ֮׷ ⢽0L)UUQ$MJFOUך*OUFSDFQUFS鷄⸇
  15. /FUXPSL1SPMFSWT4UFUIP'MJQQFS !143 /FUXPSL1SPMFS 4UFUIP'MJQQFS 穈׫鴥׬׋׭ך㹋鄲 ♶銲 䗳銲 涪欰׃׋鸐⥋ꆀך鎘庠 ؚٓؿד鋅׸׷ 筨鎘ָ鋅׸׷

    鸐⥋ך鎘庠ך➬倯 儗꟦眔㔲ד䭷㹀 䌢ח崧׸גֻ׷ 嗚稊〳腉 暴㹀ך乼⡲٥ة؎ىؚٝד涪欰׃גְ׷ "1*鸐⥋׾嗚鏾ׅ׷הֹח剣⸬
  16. /FUXPSL1SPMFSWT4UFUIP'MJQQFS !144 /FUXPSL1SPMFS 4UFUIP'MJQQFS 穈׫鴥׬׋׭ך㹋鄲 ♶銲 䗳銲 涪欰׃׋鸐⥋ꆀך鎘庠 ؚٓؿד鋅׸׷ 筨鎘ָ鋅׸׷

    鸐⥋ך鎘庠ך➬倯 儗꟦眔㔲ד䭷㹀 䌢ח崧׸גֻ׷ 嗚稊〳腉 暴㹀ך"1*׾嗚鏾 ׃׋ְ㜥さח剣⸬
  17. ˖ #SFBLQPJOU)FMQ]*OUFMMJ+*%&" ˖ IUUQTXXXKFUCSBJOTDPNIFMQJEFBVTJOHCSFBLQPJOUTIUNM ˖ "OESPJE1SPMFSד،فٔךػؿؓ٦وٝأ׾庠㹀ׅ׷]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFBOESPJEQSPMFS IMKB ˖

    $161SPMFS׾⢪欽׃ג$16"DUJWJUZהًاحسزٖ٦أ׾嗚叨ׅ׷]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFDQVQSPMFSIUNM IMKB ˖ .FNPSZ1SPMFS׾⢪欽׃ג+BWBؼ٦فהًٌٔⶴ׶䔲ג׾邌爙ׅ׷]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFNFNPSZQSPMFSIUNM IMKB ˖ /FUXPSL1SPMFS׾⢪欽׃גطحزٙ٦ؙزٓؿ؍حؙ׾嗚叨ׅ׷]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFOFUXPSLQSPMFSIUNM IMKB ˖ &OFSHZ1SPMFS׾⢪欽׃גؒطؘٕ٦⢪欽ꆀ׾锃ץ׷]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFFOFSHZQSPMFSIUNM IMKB 3FGFSFODFT !192
  18. ˖ /FX'FBUVSFTJO"OESPJE4UVEJP1SFWJFX]"OESPJE%FWFMPQFST ˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSFWJFXGFBUVSFT ˖ 5JNCFS ˖ IUUQTHJUIVCDPN+BLF8IBSUPOUJNCFS ˖ 'MJQQFS

    ˖ IUUQGBDFCPPLHJUIVCJPTUFUIP ˖ 'MJQQFS ˖ IUUQTGCJQQFSDPN ˖ -FBL$BOBSZ ˖ IUUQTTRVBSFHJUIVCJPMFBLDBOBSZ ˖ )ZQFSJPO"OESPJEד"OESPJE،فٔ׾رغحؚ׃״ֲ]2JJUB ˖ IUUQTRJJUBDPNUBLBIJSPNJUFNTGGEEEDF 3FGFSFODFT !193