본문 바로가기
반응형
Programming/Android

Android Studio에서 나만의 Library 만들어보기

by JAMINS 2015. 12. 10.

안드로이드 앱 개발을 하다보면 다양한 오픈소스 라이브러리를 이용할 때가 많다. 주로 Github에서 Library를 받거나 Gradle import 이용하면서 가끔씩 내가 만든 소스를 Library화 시켜보면 어떨까 라는 생각을 하게됐다. 말 나온 김에 한 번 만들어보자! Android Studio를 이용하여 Library 프로젝트를 생성하고 산출물인 AAR(Android Archive package) 파일 생성하는 과정까지 실습해보겠다.

1. 새 프로젝트 생성

첫번째로, Android Studio로 Library 프로젝트를 생성해야한다. New Project를 클릭하여 새로운 프로젝트를 생성한다.

activity는 있어도 되고 없어도 된다. 여기서는 테스트용이므로 No Activity 선택.

2. Gradle 설정 변경

Library 프로젝트로 변경시키기 위해 Gradle의 설정을 변경해야 한다.

  1. build.gradle 파일의 맨 위 apply plugin: 'com.android.application' 부분을 apply plugin: 'com.android.library'로 수정
  2. defaultConfig 부분의 applicationId 라인을 삭제한다
  3. gradle 적용을 위해 상단 Sync Now를 클릭

3. Library 소스 작성

AndroidManifest 파일, res폴더 등 기존의 안드로이드 프로젝트 구성과 같으므로 여기에 나만의 Library를 구성하면된다.

CustomView를 만들거나 class 위주 마음껏 코딩하면 된다. 여기서는 샘플로 class 하나를 만들어보겠다.

package mylibrary.flowarch.com.blackcalendarview;

import android.content.Context;
import android.content.res.Resources;
import android.widget.Toast;

public class MyTest{
    public void showMyToast(Context context, Resources res){
        Toast.makeText(context, res.getString(R.string.warning), Toast.LENGTH_SHORT);
    }
}

위와같이 클래스와 메서드를 선언한다.

4. AAR 파일 생성

Library Package 파일인 AAR(Android Archive package)파일을 생성한다. Android Studio창의 우측 끝부분을 보면 Gradle 메뉴가 보인다. 이 아이콘을 클릭한다.

창에 아무것도 뜨지 않는다면 Refresh(새로고침) 아이콘을 클릭하면 Gradle Project 들이 표시된다. 가장 상위에 있는 project를 클릭하고 4번째 아이콘인 Execute Gradle Task를 클릭한다.

Run Gradle Task 다이얼로그 창의 Command Line에 aR 을 입력하고 실행한다. (aR은 assembleRelease 의 약자로 Release버전의 AAR파일을 빌드하는 명령어이다, aR 대신 assembleRelease를 입력해도 무관하다)

아래와 같이 BUILD SUCCESSFUL이 보이면 정상적으로 빌드가 완료된 것. 생성된 app-release.aar 파일은 [프로젝트 명]\app\build\outputs\aar 폴더에서 확인가능하다.

AAR이란?

Android Archive package의 약자로 안드로이드 Library용 압축 형태의 파일이다. Java에서 Library용으로 자주 사용되는 파일의 확장자는 JAR (Java Archive files) 이다. 안드로이드 AAR 파일은 이와 같은 컨셉으로 사용된다. AAR 파일은 소스코드 뿐만 아니라 안드로이드 Resources 들이 포함된다. AAR 파일은 아래 파일들의 압축된 형태를 제공한다.

  • /AndroidManifest.xml (필수)
  • /classes.jar (필수)
  • /res/ (필수)
  • /R.txt (필수)
  • /assets/ (선택)
  • /libs/*.jar (선택)
  • /jni/<abi>/*.so (선택)
  • /proguard.txt (선택)
  • /lint.jar (선택)

5. 프로젝트에 LIbrary 적용하기

안드로이드 프로젝트에 새로운 Library를 추가하는 방법은 다양하다. Library파일을 직접 import 시키는 방법, gradle의 compile을 통해 자동으로 import 하는 방법 등. 여기서는 추출한 AAR파일을 직접 import하고 소스를 적용해보겠다.

  1. 새로운 안드로이드 프로젝트를 생성
  2. AAR 파일을 프로젝트의 Libs 폴더에 복사
  3. build.gradle 파일에 compile [package name]:[file name]:[version code]@aar 형식으로 입력. (여기서는 compile 'mylibrary.flowarch.com.blackcalendarview:mytest:1.0@aar')
  4. build.gradle 파일에 아래내용을 추가
repositories {
    flatDir {
        dirs 'libs'
    }
}

하지만 아무래도 이렇게 파일로 붙이는 것 보다 Gradle의 좋은 기능을 활용하는 것이 낫다. 유명한 오픈소스를 사용할 때 gradle에서 compile 한줄에 가능한 경험이 있을 것이다. 이렇게 편한 방법을 적용하기 위해서는 내 Library를 jCenter나 Maven Center repository에 배포를 해야만 가능하다. 내 Library 소스들을 Github에서 관리하고 jCenter와 같은 공식 Repo공간에 배포한다면 손쉽게 사용 가능할 것이다. 이러한 과정은 추후 업로드하면서 보여줄 예정이다.

댓글