티스토리 뷰

반응형

Android Studio에서 처음으로 스토어 배포용 APK를 생성하였다. 내부적으로 배포 했을 경우에 문제가 없기에 당연히 아무 문제도 없을 것이라 생각하고 바로 프로덕션 배포를 진행하였으나, 스토어 배포 된 버전에서 S급 오류가 무더기로 쏟아졌다. 특정 라이브러리를 사용하는 모든 기능에서 앱이 죽는 것이다.

부랴부랴 검색을 하고, 이것도 고쳐보고 저것도 고쳐보았지만 이유를 알지 못한체 Release로 배포를 수십 번 했음에도 마음이 급해 원인을 찾지 못하고 있었다.

그러다 마음을 가라 앉히고 Release일 때 문제가 생긴점을 감안해 app.Gradle 파일을 다시 훑어본 결과 BuildTypes가 눈에 띄웠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.release
        //minifyEnabled true
        //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 
        debuggable false
    }
}
 
cs


최적화 및 난독화를 위해 추가되었던 proguard 옵션을 주석처리 하고나서 문제를 해결하였다.

해당 옵션을 활성화시키고자 한다면 "proguard-rules.pro'파일 안에 적용된 Libary의 ProGuard 옵션을 찾아 추가해 주어야 한다.

우선 급하기 때문에 주석처리 후 버전을 배포할 수 밖에 없었다.


이후 검색을 해 보니 특정 라이브러리를 사용함에 있어 "proguard-rules.pro"에 별도로 필요한 옵션들이 각각의 Library마다 존재하는 것을 확인 하였다. "daummap proguard" "facebook proguard"등등 검색해서 옵션들을 추가하였다.


오류를 모두 수정한 proguard-rules.pro 파일의 내용은 다음과 같다.

13~19 라인까지는 영향을 주지 않지만 우선 문제가 생길 것으로 보여 추가해 놓았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
-keepattributes Signature
 
-dontwarn org.apache.http.**
-dontwarn com.nhaarman.**
-dontwarn com.flurry.**
-dontwarn com.kakao.**
-dontwarn uk.co.senab.**
 
-keep class com.facebook.** { *; }
-keep class net.daum.** { *; }
 
-keep class com.loopj.android.http.** { *; }
-keep interface com.loopj.android.** { *; }
 
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v7.app.** { *; }
-keep interface android.support.v7.app.** { *; }
 
 
-keepclassmembers class * implements YOURPACKAGE$JavaScriptInterface {
    <methods>;
}
 
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
 
cs


참조 블로그

http://drcarter.tistory.com/145

https://www.davidlab.net/ko/tech/android-studio-tips-project-settings/#3_App_Signing

http://kanghk.tistory.com/1


반응형
댓글
반응형