들어가기 앞서

 Gradle 에서는 프로젝트를 단일 프로젝트나 멀티 프로젝트로 구성할 수 있습니다. 멀티프로젝트는 하위 폴더에 여러개의 Module을 추가할 수 있습니다. Android Studio 는 프로젝트를 생성하면 자동으로 멀티 프로젝트로 구성되고, 하위에는 App Module이 추가되어 있습니다. 



Android Library Module 만들기
 안드로이드 라이브러리 모듈은 com.android.libaray 플러그인이 필요하고, 그결과 AAR파일을 생성 할 수 있습니다. 
AAR파일은 JAR파일과 비슷해보일 수 있지만 다른점은, 하나의 앱처럼 안드로이드 화면을 포함할 수 있다는 점입니다. JAR 파일은 순수 로직만 포함할 수 있습니다. 하지만 AAR파일은 res폴더의 xml 이미지, 리소스등을 포함할 수 있기때문에 안드로이드 화면을 표현할수 있게 됩니다. 

다음은 안드로이드 라이브러리 모듈을 생성하는 과정입니다. 안드로이드 스튜디오에서 [File -> New -> New Module]을 선택합니다. 그 이후 안드로이드 라이브러리 모듈을 선택하고 이름은 MyLibModule이라고 하겠습니다.

그리고 build.gradle에 settings.gradle에 보시면 include된것을 확인하실 수 있습니다.
include ':app', ':mylibmodule'
또한 build->makd module 'mylibmodule' 을선택하면 aar파일이 생성되는것을 outputs 폴더에서 확인하실 수 있습니다.


Gradle 로컬 저장소 만들기에 앞서
 현업에서 상용프로젝트를 개발할때, 라이브러리를 gradle을 이용해서 참조해서 사용하는 경우가 있습니다. 그런데 jcenter나 maven center에 올려버리면 보안상 문제가 생길 우려가 엄청납니다. 그러므로 사내에 로컬 저장소를 만들어서 운영해야 할 것입니다.


Gradle 로컬 저장소 만드는 방법
 Gradle에서 로컬 저장소를 지정하는 방법을 배워보겠습니다. 
공동작업을 위해서는 프로젝트 폴더 하위에 로컬 저장소를 두는것이 일반적입니다. 먼저 프로젝트 홈폴더를 환경변수에 등록하겠습니다. 

ORG_GRADLE_PROJECT_HOME 환경변수는 gradle 스크립트에서 $PROJECT_HOME으로 참조할 수 있습니다.

다음과 같이 Project의 build.gradle을 변경합니다.

allprojects{
   reposotories{
     jcenter()
     mavne{
      url "file://($PROJECT_HOME)./myReposiroy"
     }
   }

}


참조할 수 있는 로컬 저장소가 생성되었습니다. URL은 위의 "file://($PROJECT_HOME)./myReposiroy" 와 같습니다.

그다음 mylibmoudle을 빌드한 결과를 로컬 저장소에 업로드할 수 있도록 uploadArchives 블록을 정의합니다.

mylibmoudle 모듈의 build.gradle 파일 아래쪽에 다음 내용을 추가합니다.


apply plugin: 'maven'

group ='com.exam.mylibmodule'

version = '1.0'


uploadArchives {

  repositories{

     mavenDeployer{

         repository( url: "file://($PROJECT_HOME)./myReposiroy")

      }

   }

 

}


업로드할 저장소의 URL과 그룹이름, 버전을 지정하면됩니다. group, version, repository url을 확인하실 수 있습니다.


uploadArchives 태스크를 실행해야합니다. 해당 프로젝트 폴더로 가서 gradlew :mylibmodule:uploadArchives 라고 치시면, 해당 태스크를 실행하고 .aar파일이 지정했던 repository에 생성되는것을 확인하실 수 있습니다. 




마지막으로 로컬저장소에 배포된 .aar파일을 참조하도록 하겠습니다.

app모듈에서 build.gradle을 아래와 같이 변경하면 되겠습니다.


dependencies{

  compile 'com.exam.mylibmoudle:mylibmodule:1.0@aar'

}


이제 app moudle에서 library module 의 액티비티를 직접 실행하실수있습니다. 라이브러리르 모듈을 참고하기 때문이죠.

이상입니다.




+ Recent posts