woong's

Android Studio Sign APK 만들기 본문

Develop/Android

Android Studio Sign APK 만들기

dlsdnd345 2016. 2. 13. 21:46

Android Studio Sign APK 만들기


안녕하세요. 2015년 첫포스트를 쓰고 있습니다.

최근 많이 나태해진 저를 새해를 비롯하여 마음을 다잡아야 겠네요 ^^



1. gradle Key Store 연결


이클립스에서는 메니페스트를 통해서 APK 에 사인 작업을 해서 APK 를 추출 하곤 했습니다.


1. 안드로이드 스튜디오 - 툴을 이용한 방법



2. 안드로이드 스튜디오 - Gradle을 이용한 방법


두가지가 있습니다.


하지만 저는 2번  Gradle 을 이용한 방법을 포스팅 해보려 합니다.

왜냐하면 1번의 경우 지원은하지만 권장하지 않는다고 명시가 되어있습니다.

그리고 안드로이드 스튜디오의 장점은 Gradle 이라 생각해서 2번 주제로 포스팅을 작석 하겠습니다.



1.  키스토어 준비


안드로이드 키스토어는 이클립스에서 사용하던 파일을 그대로 사용하면 되겠습니다.


위와 같이 루트 경로에 파일을 글어서 넣어 주면 되겠습니다.


 




2. 안드로이드 키스토어 연결 작업 진행


이제 준비된 안드로이드 키스토어를 연결작업을 진행해야 합니다.

app 의 build.gradle 파일을 열어 작성합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
signingConfigs{
 
        releaseWithProps{
            storeFile file(keystore) // 파일경로 Root app
            storePassword keystore_pass // 1차 비밀번호
            keyAlias key_alias // 키 이름
            keyPassword key_pass // 키 비밀번호
        }
 
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.releaseWithProps
        }
    }
cs


위코드가 핵심 코드 입니다.


위 상단의 signingConfigs 는 안드로이드 키스토어 연결 정보 입니다.


releaseWithProps 는 제가 지은 이름이고 , 직접 이름을 부여해주시면 되겠습니다.

이안의 정보가 중요 합니다.


1. storeFile file = "키스토어 경로" (루트 경로에 있으면 이름만 입력해주시면 되겠습니다.)

2. storePassword = "키스토어 비밀번호"

3. keyAlias = "키스토어 내부 이름"

4. keyPassword ="키 비밀번호"


다음 으로 하단의 그룹의 코드를 보면 한줄 추가 된것을 볼수 있습니다. 


 

1
2
signingConfig signingConfigs.releaseWithProps
 
cs

 


위에서 설정한 키스토어 정보를 릴리즈시에 사용하겠다 . 라는 코드 입니다.

나머지 코드는 프로가드 코드로써 암호화 방법이여서 키스토어 설정과 무관하여 따로 설명은 제외 하겠습니다.


이렇게 설정 하고 보면 위코드에서 이상한것을 볼 수 있습니다.


 

1
2
3
4
5
6
 
releaseWithProps{            storeFile file(keystore) // 파일경로 Root app            
                             storePassword keystore_pass // 1차 비밀번호
                             keyAlias key_alias // 키 이름
                             keyPassword key_pass // 키 비밀번호        
                }
cs


위 코드를 보면 경로 , 비밀번호 , 키이름 , 키비밀번호에는 정확한 값이 들어 있지 않습니다.


storepassword 12341234 


이와 같이 입력해도 사인 APK 를 만들수 있습니다.

저는 위와 같이 한것은 요새는  git 을 통해서 소스코드를 관리하다보니 위정보와 키만 알수 있으면 , 누구든지

제 마켓의 앱을 다른것으로 바꿀수 있기 때문에 중요정보를 숨겨 놓았습니다.


이글을 보시는 분들도 아마 저와 같은 환경이신분이 많기 때문에 숨기는것을 권장 드립니다.


3. 키스토어 정보 파일로 관리하기


루트 경로에 gradle.properties 파일하나를 생성합니다.




오른족 마우스 클릭 > new > file 

파일을 하나 생성합니다 .


 

1
2
3
4
5
6
7
8
9
 
keystore=android-keystore
keystore_pass=12341234
key_alias=in-woong park
key_pass=12341234
 
 
 
 
cs

 


위 데이터는 보안상 변경 하였습니다.


위와 같이 입력합니다.

자신의 키스토어 , 비밀번호 등을 입력합니다.


위와 같이 입력후에 build.gradle 에 앞의 변수명을 입력해주면 저 파일의 값을 읽어와 연결하게 됩니다.

위와 같이 작업을 하고 git 에 푸시 하실때 ignore 파일에 키스토어와 , gradle.properties 파일을 제외

하고 올리시면 보안 이슈를 해결 할 수 있을것 같습니다.

 

5. 사인  APK  추출


​위와 같이 설정이 완료 되면 APK 를 추출 할수 있습니다. 


안드로이드 스튜디오 하단의 터미널을 실행 시킵니다.

루트경로의 gradlew 파일이 있는지 확인 합니다.



ls 명령어를 통해서 해당경로의 파일을 확인할수 있습니다.


맥에서는 gradlew 파일의 권한이 없어서 설정해주어야 합니다.

ls - al 명령어를 입력하면 권한을 확인 할수 있습니다.



저는 변경된 권한이 되어있지만 처음이신분은 아마 위와 다른 권한이 설정되어 있습니다.


권한을 변경해주어야 합니다.


chmod a+x gradlew


위와 같이 변경 하시면 위 스크린샷과 같은 권한을 받을수 있습니다.


./gradlew assembleRelease 명령어를 입력하면 추출이 진행됩니다.



완료가 되었습니다.



해당 경로build <outputs<apk 파일을 보시면 위와 같이 추출된것을 볼수 있습니다.

왼쪽의 파일은 사인이 안된 APK

중간의 파일은 사인이 된 APK


입니다.


위와 같이 설정을 통해서 사인을 하면 빌드시에 APK  가 추출되니 한번 설정으로 사인을 앞으로는

자동으로 할수 있게 되었습니다.


Comments