'android studio'에 해당되는 글 1건

  1. 2013.10.22 Android Studio + Gradle 이용해서 apk빌드하기
2013.10.22 15:54

안드로이드 스튜디오에서 프로젝트를 생성하게 되면 기본적으로 gradle이 적용된? 상태가 된다.


이때 프로젝트 구조가 기존에 알던 자바 프로젝트와 조금 다른데,


먼저 프로젝트폴더 안에 실제 어플리케이션의 root가 존재하게 되고, 프로젝트 폴더안에는 그 밖에 전체적인 셋팅을 담고 있다.

여기서 build.gradle이 여기도 존재하고, 어플리케이션폴더 안에도 존재하는데, 이는 밖에 위치한 build.gradle이 최상위란 뜻인거 같다.


우리가 작업해줘야 할것은 어플리케이션폴더 안의 build.gradle파일.


먼저 android gradle 참고할만한 문서 : http://tools.android.com/tech-docs/new-build-system/user-guide


먼저 나의 경우, Free 앱과 Paid앱을 따로 개발할 수는 없고, 단순히 앱 이름과 리소스만 변경하고자할때 이런 빌드 툴이 굉장히 편리하다. 알고 있으면.


그래서 한 일주일간 삽질 해가며 결국 이클립스를 버리고 안드로이드 스튜디오로 왔는데 옮긴 이유가 위에서도 언급했듯이 일단 프로젝트의 구조부터가 다르다. 그래서 gradle을 이용해서 뭔가 해보기가 애매했다. 그냥 옮기니 참 편하드라...?


일단 어플리케이션의 build,gradle을 보면 기본적으로 몇가지가 적혀있는데 gradle 버전 명시와 플러긴(여기서는 안드로이드) 그리고 안드로이드 버전정도가 있다.


gradle의 버전의 경우 현재 기준으론 1.8버전이 최신인데 이 버전은 0.6.+로 기재하면되고 그 이전버전의 경우 0.5정도 하면 될거 같다. 아직 완벽히 아는게 아니라서 왜 버전이 다른지는...



buildscript {

    repositories {

        mavenCentral()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:0.6.+'

    }

}



apply plugin: 'android'


repositories {

    mavenCentral()

}


// 사용할 안드로이드 sdk버전

android {

    compileSdkVersion 17

    buildToolsVersion "17.0.0"


    defaultConfig {

        minSdkVersion 9

        targetSdkVersion 17

    }




// 키스토어 설정 관련

// 내 경우 free, paid 두개를 동시에 빌드하기 위해서 서로 다른 키카 필요하다.(서로다른 키스토어가 필요하다는 뜻 아님.)

// 그리고 storeFile file() 에 키스토어의 경로를 기재해준다.

// 그리고 키 이름과 스토어 암호, 키 암호를 적어준다.

// 그런데 이렇게 하게 되면 build.gradle을 까보는것만으로도 비번을 알 수 있기에 위험한데 이걸 뭐 따로 저장한다던가 뭐 몇가지 대체하는 방법이 있었음. 여유가 생기면 찾아봐야지.

    signingConfigs {

        freeConfing {

            storeFile file(".../");

            storePassword "password"

            keyAlias "keyname_free"

            keyPassword "keypassword"

        }

        paidConfing {

            storeFile file(".../");

            storePassword "password"

            keyAlias "keyname_paid"

            keyPassword "keypassword"

        }

    }



// 이부분은 빌드를 진행할때 어떤 프로덕트를 생성할 것인지에 대한것을 기술하는거 같음.

// 보면 flavor이름이 paid, free이렇게 있다.

// 그리고 각각의 flavor에서 

// buildConfig -> BuildConfig.java에 대해서 한라인 수정 

// versionCode -> 버전 코드 - 빌드시에 AndroidMenifest.xml에 적용되서 빌드됨. 굳이 매니페스트 파일을 수정 할 필요 없음.

// versionName -> 버전 이름

// signingConfig -> 아까 위에서 정의한 사이닝컨픽. 반드시 이 위에 정의해줘야함...

    productFlavors {

        paid {

            packageName "com.example.myapp"

            buildConfig "public final static boolean isFullVersion = true;"

            versionCode 2

            versionName "1.1"

            signingConfig signingConfigs.paidConfing


        }

        free {

            packageName "com.example.myapp"

            buildConfig "public final static boolean isFullVersion = false;"

            versionCode 2

            versionName "1.1

            signingConfig signingConfigs.freeConfing

        }

    }

}


dependencies {

    compile 'com.android.support:appcompat-v7:+'

}



터미널에서   gradle을 빌드할땐 그냥 gradle build하면 빌드를 진행함.


기존의 apk등등 모두 지우고 새로 빌드할땐 gradle clean build해주면 됨.


일단 플래그 변경으로 어플리케이션 내부의 동작을 변경 할 수 있지만(이건 그냥 이클립스에서 할때도 됨.) 리소스의 경우는 조금 다르다.


먼저 src/main, src/res등의 폴더가 있는데 src폴더 하위에 free, paid폴더를 만들고 각각의 리소스를 경로에 맞게 넣어주면 빌드시에 해당 flavor을 찾아서 빌드한다.

따라서 각각 다른 리소스를 사용 할 수 있다. 



하다가 갑자기 com.example.myapp.R을 못 읽어온다고 할 수 있는데 이때는 프로젝트 설정에 들어가서 R.java가 포함된 폴더를 Source폴더로 설정해주면됨.


단점이 있다면 뭔가 용량이 늘어났다. 뭐때문인진 모르는데,,,기존 약 500kb에서 현재 1.2mb로 늘어났다.

라이브러리 포함도 안시켰는데도 이럼....ㅅㅂ


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0


티스토리 툴바