Try โ€‚โ€‰HackMD

Testing Command Guide

APK Instrumentation

(sudo) acv instrument [apkname].apk

Example) sudo acv instrument ./3097cf0970513bcc35d656aa51794b73b20e66e2f03251ba9f58fe5a3068a2f5.apk

~/acvtool/acvtool_working_dir/instr_[apkname].apk ์ด ์ƒ์„ฑ๋จ

Instumentation์ด ๋๋‚˜๋ฉด ์ปค๋งจ๋“œ๋ผ์ธ์—
package name: bbc.mobile.news.ww ์˜ ํ˜•ํƒœ๋กœ package_name์ด ๋œจ๋Š”๋ฐ ๊ธฐ๋กํ•ด ๋‘˜ ๊ฒƒ

APK Instrumentation์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ, ์‹คํŒจ ๋กœ๊ทธ๋ฅผ txt๋กœ ๊ธฐ๋กํ•œ ๋’ค ์‹คํŒจ ์ฒ˜๋ฆฌํ•  ๊ฒƒ.

APK Installation

(sudo) acv install [path_to_apk]/[apkname].apk
ํ˜น์€
(sudo) adb install [path_to_apk]/[apkname].apk

Example) sudo acv install ~/acvtool/acvtool_working_dir/instr_3097cf0970513bcc35d656aa51794b73b20e66e2f03251ba9f58fe5a3068a2f5.apk

APK Uninstallation

(sudo) adb uninstall

ACV Scenario Recording

(sudo) acv start [package_name]

Recording์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์›๋ณธ ์•ฑ์„ ์ง€์šฐ๊ณ , instr_[appname].apk๋ฅผ ์žฌ์„ค์น˜ ํ•œ ํ›„ ์ง„ํ–‰ ํ•  ๊ฒƒ.

ACV Report Generation (Getting EC File)

(sudo) acv report [package_name] -p ~/acvtool/acvtool_working_dir/metadata/[apkname].pickle

Example) sudo acv report us.lovebyte -p ~/acvtool/acvtool_working_dir/metadata/3097cf0970513bcc35d656aa51794b73b20e66e2f03251ba9f58fe5a3068a2f5.pickle

mnt/sdcard/us.lovebyte/onstop_coverage_1612153632421.ec: 1 file pulled. 58.7 MB/s (658956 bytes in 0.011s)
๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ EC ํŒŒ์ผ์ด ์ถ”์ถœ๋˜์—ˆ๋‹จ ๋ฌธ๊ตฌ๋ฅผ ๋ฐ›๊ณ  ๋‚˜๋ฉด ๊ทธ๋ƒฅ Ctrl+C๋กœ ์ข…๋ฃŒํ•ด๋„ ๋จ

Reduced APK Generation

pypy demoslice.py [path_to_original_apk]/[apkname].apk ~/acvtool/acvtool_working_dir/report/[package_name]/ec_files/ ~/acvtool/acvtool_working_dir/metadata/[apkname].pickle โ€“purge_res

Example) pypy demoslice.py ../../testset2/3097cf0970513bcc35d656aa51794b73b20e66e2f03251ba9f58fe5a3068a2f5.apk ~/acvtool/acvtool_working_dir/report/us.lovebyte/ec_files/ ~/acvtool/acvtool_working_dir/metadata/3097cf0970513bcc35d656aa51794b73b20e66e2f03251ba9f58fe5a3068a2f5.pickle --purge_res

~/demoslice ์— temp_2348534233 ํ˜•ํƒœ์˜ ํด๋” ์ƒ์„ฑ๋จ.
๊ฒฐ๊ณผ๋กœ reduced_app_[ILP ์ œํ•œ ์šฉ๋Ÿ‰].apk ์ƒ์„ฑ๋จ.

ํ˜„์žฌ๋Š” ๋ฌดํ•œํžˆ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ์œผ๋‹ˆ, ์ ๋‹นํžˆ ์ƒ์„ฑ๋˜๋Š” APK์˜ ์šฉ๋Ÿ‰์— ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค ์‹ถ์œผ๋ฉด ๊ฐ•์ œ์ข…๋ฃŒํ•ด ์ฃผ๋ฉด ๋จ (๊ณง ํŒจ์น˜ํ•  ์˜ˆ์ •)

Signing APK

(sudo) acv sign [path_to_apk]/[apkname].apk

๊ฒฐ๊ณผ๋กœ [apkname].apk.signed.apk ๊ฐ€ ์ƒ์„ฑ.
์ด๊ฑธ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ช…๋˜์ง€ ์•Š์€ ์•ฑ์„ ๊น๋‹ค๊ณ  adb๊ฐ€ ์„ค์น˜๋ฅผ ๊ฑฐ๋ถ€ํ•จ.

๊ธฐํƒ€ adb ๋ช…๋ น์–ด

  1. ๋กœ๊ทธ์บฃ ๋ณด๊ธฐ
    adb logcat : ์•ฑ์ด ์ผœ์ง€์ง€ ์•Š์„ ๋•Œ ๊ด€๋ จ ๋คํ”„๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ์— ์ข‹์Œ. ๊ธฐ๋กํ•ด ๋‘๋ฉด ์ข‹๋‹ค.

  2. adb shell am start -a android.intent.action.MAIN -n [package_name]/[activity_name] -d [data] : acv start๋กœ ๋ ˆ์ฝ”๋”ฉ ํ•  ๋•Œ ํŠน์ •ํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด -d ์˜ต์…˜์€ ์•ˆ ์ค˜๋„ ๋œ๋‹ค.
    ์ฐธ์กฐ : https://samse.tistory.com/entry/adb-shell์—์„œ-ํŠน์ •-activity์‹คํ–‰ํ•˜๊ธฐ

  3. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์ž˜ ์•ˆ๋„๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉด, Android Studio์˜ Emulator Manager์—์„œ Wipe Dataํ•˜๊ณ  Cold Boot ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„ ํ•ด๊ฒฐ๋œ๋‹ค.

์‹คํ—˜ ์ง„ํ–‰ ๋ฐฉ๋ฒ•

  1. ์•ฑ์„ APKTool๋กœ ์—ด์–ด์„œ AndroidManifest.xml์—์„œ Activity๋ฅผ ๋ณด๊ณ  ์–ด๋А Activity๋ฅผ ์‹œ์ž‘์œผ๋กœ ์žก์„ ์ง€ ๋ณธ๋‹ค.
  2. ์•ฑ์„ Instrumentation ํ•œ๋‹ค
  3. ์‹œ์ž‘์œผ๋กœ ์žก์€ Activity (๊ทธ๋ƒฅ ์ผœ๋„ ๋˜๊ณ , ADB๋กœ ์ผœ๋„ ๋œ๋‹ค)๋ถ€ํ„ฐ 2-3๊ฐœ์˜ ๋ทฐ (ํ™”๋ฉด ์ „ํ™˜), 8๊ฐœ ์ด์ƒ์˜ ํด๋ฆญ ์ด๋ฒคํŠธ (์ด๊ฑด ์ž„์˜๋กœ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜์—ฌ๋„ ์ข‹๋‹ค) ์ •๋„๋ฅผ ๋…นํ™”ํ•œ๋‹ค.
  4. ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  demoslice ํˆด์„ ๋Œ๋ฆฐ๋‹ค.
  5. ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ๋˜‘๊ฐ™์€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•œ๋‹ค.
  6. ์ž‘๋™ํ•˜๋ฉด, pickle๊ณผ ecํŒŒ์ผ, ์‹œ๋‚˜๋ฆฌ์˜ค ๋…นํ™” ์˜์ƒ, ์ค„์–ด๋“  APK๋ฅผ ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์— ์—…๋กœ๋“œํ•œ๋‹ค.