QtCreator에서 Android Application을 제작하면 코드를 빌드할 때마다 관련된 so 파일들을 가지고 apk 파일을 다시 만들고 하는 과정으로 인해 Deploy 시간이 오래 걸린다. 수정된 파일만 Android 기기에 올리는 방법을 이용하여 빌드 및 디버깅에 들어가는 시간을 줄이는 방법을 정리한다.

  • 프로젝트 이름은 “untitled”로 간주한다.

  • Android Kit를 선택한다.

  • 일단 처음은 빌드를 하고 설치 및 실행까지 해 본다.
  • 이후 코드를 수정할 때마다 빌드, apk 파일 생성, 설치의 과정을 계속 반복하게 되어 시간이 오래 걸린다. build directory에 가 보면 libuntitled_armeabi-v7a.so 파일이 있는데 이 파일만 다시 Android 기기에 설치해 주면 된다.

  • 이 파일을 /data/data/org.qtproject.example.untitled/lib에 복사해 주면 되는데 권한 문제로 인하여 한번에 설치는 되지 않는다. 따라서 adb push 및 cp 명령을 적절히 혼합해서 파일을 복사한다.
    • 빌드된 so 파일을 /data/local/tmp에 복사
      adb push libuntitled_armeabi-v7a.so /data/local/tmp/
      
    • cp 명령을 이용해서 /data/data에 다시 복사
      adb exec-out "su -c cp /data/local/tmp/libuntitled_armeabi-v7a.so /data/data/org.qtproject.example.untitled/lib"
      
    • so 파일의 실행 권한 변경
      adb exec-out "su -c chmod 755 /data/data/org.qtproject.example.untitled/lib/libuntitled_armeabi-v7a.so"
      
    • 위 3개 명령어를 “mydeploy.sh”이라는 파일로 정리하여 Qt의 build directory에 저장한다. “untitled”라는 문구를 자신의 프로젝트 이름으로 바꾸어 사용하면 된다(chmod +x 명령으로 실행 권한을 줄 것).
      #!/bin/sh
      adb push libuntitled_armeabi-v7a.so /data/local/tmp/
      adb exec-out "su -c cp /data/local/tmp/libuntitled_armeabi-v7a.so /data/data/org.qtproject.example.untitled/lib"
      adb exec-out "su -c chmod 755 /data/data/org.qtproject.example.untitled/lib/libuntitled_armeabi-v7a.so"
      
  • QtCreator > Projects > Android Build > Build Step에서 “Make install” 및 “Build Anrdoid APK”를 disable시키고 Custom Process Step으로 mydeploy.sh 파일을 실행시킬 수 있도록 추가한다.

  • QtCreator > Projects > Android Build > Run Step에서 “Deploy to Android device”를 disable시키면 Run이나 Debugging을 할 때 속도가 좀 더 빨라진다.

  • 실제로 빌드 속도가 빨라졌는지 확인해 본다.
  • mydeploy.zip 혹은 androiddeploy.zip 파일을 활용할 수도 있다.