(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로 기록한 뒤 실패 처리할 것.
(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
(sudo) adb uninstall
(sudo) acv start [package_name]
Recording을 시작하기 전에 원본 앱을 지우고, instr_[appname].apk를 재설치 한 후 진행 할 것.
(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로 종료해도 됨
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의 용량에 변화가 없다 싶으면 강제종료해 주면 됨 (곧 패치할 예정)
(sudo) acv sign [path_to_apk]/[apkname].apk
결과로 [apkname].apk.signed.apk 가 생성.
이걸 설치하지 않으면 서명되지 않은 앱을 깐다고 adb가 설치를 거부함.
로그캣 보기
adb logcat
: 앱이 켜지지 않을 때 관련 덤프를 기록하기에 좋음. 기록해 두면 좋다.
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실행하기
에뮬레이터가 잘 안도는 것 같으면, Android Studio의 Emulator Manager에서 Wipe Data하고 Cold Boot 하면 대부분 해결된다.