[안드로이드] 민감정보 숨기기

귤쳥·2022년 9월 16일
0

별 헤는 밤 고치기

목록 보기
1/3
post-thumbnail


별 헤는 밤 바로가기!

키값 및 Retrofit 서버 주소설정

카카오SDK키값, 서버주소를 숨기고 retrofit 주소값을 개발(로컬)서버와 배포서버를 쉽게 분리할 수 있도록 재설정한다.

  • 기존설정
    public class RetrofitClient {
        private static final String BASE_URL = "서버주소를 문자열 그대로 사용";
    
        public static SearchPageRetrofitService getApiService() {
            return getInstance().create(SearchPageRetrofitService.class);
        }
    
        private static Retrofit getInstance() {
            Gson gson = new GsonBuilder().setLenient().create();
            return new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
    }

retrofit주소 Class로 관리

TaskServer.java

여러개의 서버 IP를 쓰기 위해서 만든 클래스

public class TaskServer {

    public static final String v1Server = "주소";
//    public static final String v1Server = "http://localhost:8080/v1/";

    public static final String kkoMapURL = "https://dapi.kakao.com/";

    public static final String fineDustURL = "http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/";

    public static final String openWeatherURL = "https://api.openweathermap.org/data/2.5/";
}

RetrofitClient.java

public class RetrofitClient {

    private static final String BASE_URL = TaskServer.v1Server;

    public static ObservationPageRetrofitService getApiService() {
        return getInstance().create(ObservationPageRetrofitService.class);
    }

    private static Retrofit getInstance() {
        Gson gson = new GsonBuilder().setLenient().create();
        return new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
}

BASE_URL을 TaskServer의 값으로 불러온다.

서버주소 및 키값 숨기기

local.properties

gitignore확인해보면 해당 파일이 포함되어있기 때문에 키값을 숨길 수 있다.

숨기고 싶은 값을 지정해준다.

또한 그렇기 때문에 각자 자신의 로컬프로젝트에서 추가해 주어야 한다.

spring_server_v1 = "주소값"

build.gradle(app)

앱수준의 그래들에서 값을 불러온다

  • buildConfigField

    프로젝트 내에서 언제든지 사용이 가능한 변수들이다.
    타입 - 키 - 값으로 저장된다.

  • manifestPlaceholders = [GOOGLE_API_KEY: google_api_key]

    매니페스트에서 사용이 필요한 경우 이용한다. 구글맵 같은 경우가 이에 해당한다

    키 - 값으로 저장된다.

'''
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {

        '''
        
       buildConfigField "String", "SPRING_SERVER_V1", properties['spring_server_v1']
			 //manifestPlaceholders = [GOOGLE_API_KEY: google_api_key] //적용예시
    }
  • gradle 수정 이후 sync하면 BuildConfig.java 파일이 자동으로 수정된다. build 폴더도 gitIgnore에 포함되어 있으므로 키값노출은 되지 않는다.
public final class BuildConfig {

'''

  // Field from default config.
  public static final String SPRING_SERVER_V1 = "입력한키값";
}

gradle수정 후 sync해도 BuildConfig파일이 수정되지 않았다면 build메뉴의 rebuildproject를 해본다

TaskServer.java

서버 주소를 다시 숨기기 위해 아까 넣어둔 값을 변경한다.

buildConfigField로 정의한 값은 “BuildConfig.지정키” 으로 사용할 수 있다.

public class TaskServer {

    public static final String v1Server = BuildConfig.SPRING_SERVER_V1;

	  '''

}

이와 같은 방법으로 각자 사용한 키값을 숨겨주면 된다.

출처

https://velog.io/@hoyaho/HideAPIKey

profile
혼긱 CE의 이제 막 시작하는 코딩

0개의 댓글