안드로이드 스투디오에서 린트(Lint) 실행하기

린트(Lint)는 안드로이드에서 제공하는 정적 분석 툴로, 정확성, 보안, 퍼포먼스, 사용성, 접근성, 번역 등 안드로이드 프로젝트의 다방면을 분석해 준다.

안드로이드 스투디오에서 실행한다면 Project 뷰 > Alalysis > Inspect Code… 를 통해 실행할 수 있다. 안드로이드 스투디오의 code inspection은 안드로이드 린트(Lint)에서 제공하는 분석 결과 외에 오타나, XML 문법 등도 추가적으로 확인해준다.

community_edition_lint

항상 실행할 필요는 없을 것 같지만, 전반적으로 코드를 손 본 경우라면 한번 실행해주자!

참조

  • lint : https://developer.android.com/tools/help/lint.html
  • Code inspection : https://www.jetbrains.com/idea/webhelp/code-inspection.html

이클립스 워크스페이스 vs. 인텔리제이 프로젝트

이클립스(Eclipse) 개발자들이 인텔리제이(Intelli J)나 인텔리제이 기반의 안드로이드 스투디오(Android Studio)로 IDE를 옮기면서 처음에 만나는 불편함을 꼽으라면, 이클립스의 워크스페이스(workspace)가 인텔리제이에는 없다는 것일 듯 하다. 사실 인텔리제이에 이클립스의 워크스페이스에 상응하는 프로젝트라는 개념이 있지만 아래 두 가지 이유로 사람들이 눈치채기 어렵다.

  • 이클립스 워크스페이스를 인텔이제이에서 임포트할 때 워크스페이스 내의 한 프로젝트만 임포트 된다.
  • 프로젝트라는 개념이 이클립스에서는 워크스페이스 내의 소속되는 하위 개념인데 반해, 인텔리제이에서는 최상위 개념으로 그 하위에 하나 이상의 모듈을 포함할 수 있어 용어에서 혼란을 느낀다.

결론부터 말하면, 인텔리제이(나 안드로이드 스투디오)에서 이클립스의 워크스페이스(와 같은 구조)를 사용하고자 한다면 이클립스의 워크스페이스를 File > Import Project를 통해 바로 열면 된다.  위자드에서 몇가지 설정을 묻지만 Next만 눌러도 실행할 수 있도록 워크스페이스를 가져온다. 물론 File > Project Structure를 통해 살펴보면 중복된 라이브러리나 필요없는 설정 등이 있지만 실행에 문제는 없다.

또한 프로젝트 구조를 살펴봐도 아래처럼 이클립스 워크스페이스와 안드로이드 스투디오의 프로젝트 구조가 같다.

eclipse_workspace
workspace structure in Eclipse
intellij_project
project structure in Intelli J

위와 같은 구조를 잡은 후에는 이클립스의 워크스페이스 + 프로젝트과 동일하다고 생각하면 된다. 아래와 같이 모듈(이클립스의 프로젝트)별로 안드로이드 SDK나 keystore등을 지정할 수 있다.

project_structure
Project Structures in Android Studio

또한 Run/Debug configurations 창을 통해 모듈마다 실행 방법을 지정할 수도 있다.

run_configurations
Run/Debug Configurations in Android Studio

그 밖에

마지막으로, 인텔리제이와 이클립스에서 사용되는 용어는 인텔이제이의 마이그레이션 FAQ에 표로 설명되어 있는데, 이를 옮기면 아래와 같다.

Eclipse IDEA
Workspace Project
Project Module
Project-specific JRE Module JDK
User library Global library
Classpath variable Path variable
Project dependency Module dependency
Library Module library

 

참고

  • 마이그레이션 FAQ : https://www.jetbrains.com/idea/documentation/migration_faq.html
  • 이클립스 워크스페이스 임포트하기 : https://www.jetbrains.com/idea/webhelp/import-eclipse-workspace.html

인텔리제이 단축키

인텔리제이 단축키를 찾아 헤매는가? 인터넷에 많이 있지만, 그게 최신인지 변경되거나 늘어난 것은 없는지 알 수가 없다. 인텔리제이에서는 Help > Default Keymap Reference 메뉴를 통해 단축키 .pdf 파일을 바로 보여준다.

intellij_reference참조

  • http://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf

 

인텔리제이 커뮤니티에디션에 안드로이드 SDK 바로가기

안드로이드를 개발할 때 인텔리제이 기반의 안드로이드 스투디오를 많이 쓰지만, 인텔리제이 프로페셔널/커뮤니티 에디션(이하, 인텔리제이 IDE)에서도 안드로이드 개발이 가능하다. IDE에 기능들이 기본으로 포함되어 있고, 안드로이드 SDK의 AVD 매니저와 SDK 매니저 등의 바로가기도 지원한다.

Screen Shot 2014-07-20 at 1.18.57

그런데 처음 인텔리제이 IDE를 설치하면 저 메뉴가 보이지 않는다. 이 때는, 안드로이드 프로젝트를 먼저 하나 만들어 빌드를 하면 된다. 그 후, 확인해보면 위와 같이 Tools > Android > … 밑으로 메뉴가 생길 것이다.

No resource identifier found for attribute ‘requiredAccountType’ in package ‘android’

최근 테블릿에 추가된 제한된 프로파일(Restricted Profiles)라는 기능이 있다. 이를 위해 <application> 부분에 requiredAccountType 부분 설정을 추가한 후에 빌드하니 아래와 같은 에러가 뜬다.

Error:(27, -1) android-apt-compiler: [모듈 이름] /Users/sunphiz/workspace/[프로젝트 이름]/[모듈 이름]/AndroidManifest.xml:27: error: No resource identifier found for attribute 'requiredAccountType' in package 'android'

Manifest 파일에서 사용하고 있는 ‘android’라는 네임스페이스에 requiredAccountType에 대한 정보가 없다는 거다.  android-apt-compiler의 에러메시지가 좀 불친절해서 헷갈렸는데,  제한된 프로파일 기능은 Android API 18부터 추가되었기 때문에 Project Structure(프로젝트 선택 후 > F4)에서 Module SDK를 API 18로 수정하면 된다.

다시 빌드해보면 잘된다 🙂

참조

  • http://developer.android.com/guide/topics/manifest/application-element.html