AIDEGen으로 IDE에서 Android Framework 개발

JS · 12 Nov 2020

AIDEGen은 Android Framework 코드를 Android Studio, Eclipse와 같은 IDE에서 작업할 수 있도록 도와줍니다.

AIDEGen 툴은 AOSP 소스에 포함되어있으며, IDE에서 개발하고 싶은 모듈에 대해서 AIDEGen으로 프로젝트 파일들을 생성합니다.

AIDEGen에 대한 자세한 소개는 AOSP - AIDEGen에서 확인할 수 있습니다.

이 글에서는 aidgen을 사용하여 프로젝트 파일을 만들고, 안드로이드 스튜디오에서 개발하는 과정을 소개합니다.

aidegen 빌드

aidegen은 안드로이드 프레임워크 코드를 IDE의 프로젝트로 만들어주는 툴이기 때문에 AOSP 코드를 다운로드 받아야 합니다.

aidgen을 사용하려면 먼저 아래와 같이 AOSP 빌드 설정을 합니다.

$ source build/envsetup.sh
$ lunch aosp_x86_64-eng

그리고 전체 빌드를 하거나, 아래와 같이 aidegen을 빌드합니다.

$ m aidegen

aidegen의 help 명령어를 통해 어떻게 사용하는지 알 수 있습니다.

$ aidegen -h
usage: aidegen [module_name1 module_name2... project_path1 project_path2...]

AIDEgen

This CLI generates project files for using in IntelliJ, such as:
    - iml
    - .idea/compiler.xml
    - .idea/misc.xml
    - .idea/modules.xml
    - .idea/vcs.xml
    - .idea/.name
    - .idea/copyright/Apache_2.xml
    - .idea/copyright/progiles_settings.xml

- Sample usage:
    - Change directory to AOSP root first.
    $ cd /user/home/aosp/
    - Generating project files under packages/apps/Settings folder.
    $ aidegen packages/apps/Settings
    or
    $ aidegen Settings
    or
    $ cd packages/apps/Settings;aidegen

positional arguments:
  targets               Android module name or path.e.g. Settings or packages/apps/Settings

optional arguments:
  -h, --help            show this help message and exit
  -d {0,1,2,3,4,5,6,7,8,9}, --depth {0,1,2,3,4,5,6,7,8,9}
                        The depth of module referenced by source.
  -v, --verbose         Display DEBUG level logging.
  -i IDE, --ide IDE     Launch IDE type, j: IntelliJ, s: Android Studio, e: Eclipse, c: CLion.
  -p IDE_INSTALLED_PATH, --ide-path IDE_INSTALLED_PATH
                        IDE installed path.
  -n, --no_launch       Do not launch IDE.
  -r, --config-reset    Reset all saved configurations, e.g., preferred IDE version.
  -s, --skip-build      Skip building jars or modules that create java files in build time, e.g. R/AIDL/Logtags.
  -a, --android-tree    Generate whole Android source tree project file for IDE.
  -e [EXCLUDE_PATHS [EXCLUDE_PATHS ...]], --exclude-paths [EXCLUDE_PATHS [EXCLUDE_PATHS ...]]
                        Exclude the directories in IDE.

IDE 프로젝트 파일 생성

이제 AIDGen으로 services 모듈의 Android Studio 프로젝트 파일을 생성할 것입니다.

다음과 같은 명령어로 프로젝트 파일을 생성할 수 있습니다.

android$ aidegen -n -p frameworks/base/services -i s -s
  • -p : 모듈의 패스를 설정하는 옵션
  • -i s : 안드로이드 스튜디오의 프로젝트 파일을 만들겠다는 의미
  • -s : 빌드를 skip하는 옵션
  • -n : 프로젝트 파일 생성 후, 자동으로 IDE를 실행시키지 않겠다는 옵션(직접 IDE를 실행시킨다면 이 옵션을 사용할 수 있습니다.)

위 명령어를 수행하면, 다음과 같이 출력되며 프로젝트 파일이 생성됩니다.

==================
Notice:
  We collect anonymous usage statistics in accordance with our Content Licenses (https://source.android.com/setup/start/licenses), Contributor License Agreement (https://opensource.google.com/docs/cla/), Privacy Policy (https://policies.google.com/privacy) and Terms of Service (https://policies.google.com/terms).
==================
....
frameworks/rs/tests/java_api/CannyLive/Android.mk
frameworks/base/packages/overlays/NavigationBarMode3ButtonOverlay/Android.mk
cts/tests/netlegacy22.api/Android.mk

-i 옵션으로 원하는 IDE를 설정합니다. 다음을 참고하시어 IDE를 설정하시면 됩니다. (j: IntelliJ, s: Android Studio, e: Eclipse, c: CLion, v: VisualStudioCode)

IDE 프로젝트 실행

AIDEGen을 이용하여 frameworks/base/services 모듈의 Android Studio 프로젝트를 생성하였습니다.

Android Studio에서 [File]->[Open]을 눌러 프로젝트를 실행합니다. services 폴더를 보면 Android project를 의미하는 아이콘이 보입니다. android studio aidegen project

프로젝트를 열면 다음과 같은 화면이 보입니다. Framework 코드를 IDE에서 작업하면 좋은 점은 다음과 같이 메소드에 대한 정보를 쉽게 볼 수 있다는 점입니다. android studio aidegen project

또한, 다음과 같이 코드를 구현할 때 사용 가능한 public 메소드 및 필드를 쉽게 찾을 수 있습니다. 메소드의 인자와 인자 개수까지 보여주니 에디터에서 개발하는 것보다 훨씬 편리합니다. android studio aidegen project

그리고 IDE가 Syntax 체크까지 해주기 때문에 컴파일 전에 문법 오류가 있는지 확인할 수 있습니다. android studio aidegen project

단점

services 모듈은 코드가 많다보니 조금 느린 것이 단점입니다. 16Core CPU에서 개발하면 빠를까요...? 사용해보신분 있으시면 알려주세요.

Settings와 같이 코드가 적은 패키지는 느리지 않습니다.

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha