public final class ActivityManagerService extends ActivityManagerNative { ... static final int BROADCAST_FG_TIMEOUT = 10 * 1000; static final int BROADCAST_BG_TIMEOUT = 60 * 1000; ... } 안드로이드 API 15 ICS 버전까지의 Broadcast Receiver의 시간제한 Broadcast Receiver도 Main Thread에서 처리되기 때문에 ANR이 존재한다. 정확한 Broadcast Receiver의 시간제한은 안드로이드 버전별로 차이가 있다. Foreground vs Background (Broadcast) Foreground Broadcast는 우선..
하나의 Activity에서 또 다른 Activity를 호출하는 방법은 위 두가지 방법이 있다. 위 두가지 함수 모두 생성되는 Activity에게 Intent를 전달하게 되면 새로운 Activity가 실행된다. startActivityForResult 함수는 startAcivity 함수와 동일하게 동작하지만, 역으로 새로 생성된 Activity에서 기존 Acitivity로 데이터를 전달하는 기능이 추가된 함수이다. 결과적으로 startActivityForResult 함수는 이러한 형태로 역으로 Intent를 한번 더 돌려주게 된다. 전송측 코드 public void onClick(View v) { switch(v.getId()) { case R.id.load_pic_url_btn: Intent intent..
1. ADB 사용가능한 Device 검색 adb devices 2. ADB 를 사용해 Device Shell로 접속 adb shell 3. APK 파일을 Device에 설치 adb install [APK File Path] 첫 번째 실행은 APK파일에 대한 Application이 이미 설치되어 있을 때 발생하는 에러이다. 해당 Application을 Device에서 삭제하고 다시 수행하니 정상적으로 설치되는 것을 확인할 수 있다. adb install -r [API File Path] -r 옵션을 주게되면 이미 설치되어있는 어플을 제거하고 다시 재설치하게 된다. 4. 설치된 Application 삭제 adb uninstall [Package Name] 5. APK 파일 추출 adb pull [File P..
Java.available : 현재 프로세스에 JavaVM이 로드되어 있는지 Boolean값 Java.androidVersion : 실행중인 Android 버전을 지정하는 문자열값 Java.enumerateLoadedClasses(callbacks) : 현재 로드된 클래스를 열거한다. 여기서 callbacks는 onMatch, onComplete를 지정하는데, onMatch는 로드된 각 클래스에 대해 호출하고, onMatch: function(className)을 통해 className을 지정할 수 있다. 그리고 onComplete는 모든 클래스가 열거 될 때 호출된다. Java.scheduleOnMainThread(fn) : fn은 VM의 메인스레드에서 동작한다. (흐음.....?) Java.choos..
1. https://github.com/JesusFreke/smali/wiki/smalidea JesusFreke/smali smali/baksmali. Contribute to JesusFreke/smali development by creating an account on GitHub. github.com 위 링크에서 smalidea-0.05를 다운로드 받는다. ( 이후에 나오는 추가적인 버전을 사용해도 된다. ) 2. Android Studio 에서 File - Setup - Plugins - (톱니)Install Plugin from Disk... 를 선택하고 다운로드 받은 smalidea-0.05.zip 파일을 압축을 해제하지 않은상태로 선택한다. 정상적으로 Plugin이 설치되었으면 Andro..
안드로이드 Application에서 Log.i 와 같이 로그를 출력할 때가 있다. 이럴 경우 안드로이드 스튜디오 상에서는 바로바로 확인이 가능하지만 Frida를 이용한다던지 동적디버깅을 진행한다던지 할 경우 마땅히 바로 확인할길이 없다. 따라서 adb의 logcat기능을 활용하여 로그정보를 확인하는 방법을 소개한다. [ 명령어 ] adb logcat -v threadtime -d *:v > [ File Name ] >> 이 경우 해당 로그기록을 Windows의 파일로 리다이렉션한다. >> 따라서 Ctrl + F 를 통해 내가원하는 키워드를 찾아낼 수 있어서 편리하다. adb logcat -v threadtime >> 이 경우에는 로그기록을 실시간으로 모니터링하기위해서 사용한다. adb logcat -v ..