노력과 삽질 퇴적물

이클립스+ADT에서 안드로이드 스튜디오로 환승하는 가이드 본문

📂게임개발 note/모바일 개발

이클립스+ADT에서 안드로이드 스튜디오로 환승하는 가이드

MTG 2019. 7. 1. 22:29






0. 시작하기 전


해당 포스트는

Android Developers Blog: An update on Eclipse Android Developer Tools등으로 이클립스 지원 중단이 발표되면서
기존 이클립스+ADT 프로젝트를 안드로이드 스튜디오용으로 컨버팅하는 작업말고도
추가 개발을 하고자 조금이라도 빠른 적응을 위한 가이드글입니다.


즉, 개발 초심/입문자를 위한것이 아니라
기존에 안드로이드 개발을 하던 사람 기준으로 개발도구 전환을 하는데 촛점을 두고 있으므로
초보자분에겐 안 맞을수도 있습니다.






1. gradle


1) gradle이란?

빌드 및 의존성 처리를 위한 스크립트 파일입니다.

어떻게 보면 이클립스+ADT환경이 GUI에 가까웠다면 gradle을 쓰는건 CUI에 가까운 방식?
(혹은 용도별로 bat파일을 다 작성/설정하는 모양새)



2) setting.gradle

1
include ‘:app’
cs


스트립트 내용자체는 굉장히 단순합니다.
물론 개발목적/요구사항에 따라 커스텀 마이징은 있겠지만, 구글쪽 문서나 해당 스크립트가 취급하는 내용을 보면
코드를 변경할 경우는 많지 않은것으로 보입니다.



3) build.gradle

> 안드로이드 스튜디오에서 build.gradle은 2가지가 있습니다.

: 여기서는 임의로 프로젝트 build.gradle / app build.gradle(혹은 모듈 레벨) 표기하겠습니다.

: 간단히만 짚으면, 구글링해서 샘플코드를 보다가 무슨 build.gradle인지 분간이 안 되면
app build.gradle --> apply plugin로 시작 혹은 android, buildTypes항목 여부.

프로젝트 build.gradle --> repositories 항목
으로 구별해볼수 있습니다.

> app build.gradle.

: 이클립스+ADT에서 주로 쓰던 AndroidManifest.xml에 명시하던 내역이 있습니다.

[(프로젝트폴더)\app\src\main\AndroidManifest.xml]

: 추가 라이브러리 연동 및 설정가능.

> 프로젝트 build.gradle

: 구글링 하다가 build.gradle을 편집하라는 내용이 있는데 대부분 이쪽이 gradle은 아니던거 같습니다.





2. 매니페스트(manifest.xml) 연계


app build.gradle쪽에서

연동된 라이브러리/minSdkVersion/버전코드 및 네임등을 지정가능하니
여기선 깔끔한 코드를 위해 액티비티 등록과 시스템 권한 지정으로 역할을 나누는게 나을것 같습니다.

앱 구동상 어느쪽을 읽는게 우선인지로 성능에 의미있는 차이를 있다면 이야기가 좀 다르겠지만요.






3. 리소스 경로 관리


1) 경로

* xml, 이미지파일, raw 하위경로 파일등은 대문자를 쓰면 안됩니다.
이건 이클립스+ADT때도 허용되지 않던 명명규칙이라 그대로 유지인거 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
android {
... ... ...
    sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res',
                           'src/main/res/raw',
                           'src/main/res/layouts/activity',
                           'src/main/res/layouts/dialog',
                           'src/main/res/layouts/widget',
                           'src/main/res/layouts/view'
            ]
        }
    }
}
cs


예시.



2) 파일IO

> assets디렉토리쪽은 리소스 ID가 아닌 AssetManager만 가능하다고 합니다.

1
2
3
4
5
6
7
8
9
10
11
try {//raw폴더 하위경로 기준.
    InputStream ins = argContext.getResources().openRawResource(R.raw.my_raw_file_name);
    byte[] buffer = new byte[is.available()];
    ins.read(buffer);
    ins.close();
    
    Log.d("SAMPLE"new String(buffer));
    } catch (IOException exception) {
        exception.printStackTrace();
    }
}
cs






4. 빌드&디버그


1) 빌드

빌드메뉴의 표기명이 좀 헷갈리더군요.

Build Bundle(s) / APK(s)면 서명이 없는 테스트용 APK고

Generate Signed Bundle / APK가 마켓에 업로드 가능한 빌드메뉴입니다.

서명파일 작성 및 암호입력은 이클립스 기반과 동일합니다.

옆의 Run을 보시면 디버그 모드가 있으니


이클립스 기반에서는 써본적이 없는데,

안드로이드 스튜디오에서는 디버그 모드로 실행하면 break point를 거는게 지원되네요.

안드로이드 개발용 에뮬레이터는 너무 느리니 NOX와 연동해서 디버깅하는거 추천드립니다.



2) 디버깅

주요 구간마다 로그를 심을때 제일 번거로운게 로그가 있는 함수명도 기입하는거였는데

구글링 해보니 로그를 심은 함수의 이름과 호출된 코드라인번호까지 알수 있는 방법이 있더군요.

코드는 아래의 링크로 대체합니다.

> [안드로이드/Android]개발할때만 Log 남기는 방법 - Debug Log - 박상권의 삽질블로그






기타. 참조자료


빌드 구성  |  Android Developers

Gradle 팁 및 레시피  |  Android Developers

리소스 제공  |  Android Developers


[Android] Gradle 이란?



장범석님의 개발일지: [안드로이드] Gradle로 여러가지 버전 생성하기

안드로이드 layout폴더를 서브폴더로 나누기 :: 혁준 블로그






기타. 변경이력


일자

변경이력

2019-07-01

 초안