Reduce qtcreator android deploy time
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"
- 빌드된 so 파일을 /data/local/tmp에 복사
-
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 파일을 활용할 수도 있다.