2014-07-11 2 views
1

Android Studio/gradle에서 내 안드로이드 응용 프로그램을 시작할 때 시스템 속성을 지정해야합니다. 그렇게하기 란 어렵지 않습니다.응용 프로그램 실행시 시스템 속성 지정

배경은 내 앱이 말하는 서버의 URL을 알아야한다는 것입니다. 테스트 및 개발 중에 기본값을 재정의해야합니다. 자산 폴더 아래의 속성 파일에서 읽은 응용 프로그램 속성 위에 시스템 속성을 병합하는 코드가 있습니다. 이제는 시스템 속성을 어떻게 든 지정하여 앱을 실행할 수있는 능력 만 있으면됩니다.

귀하의 도움을 위해 TIA.

답변

1

언제든지 SharedPreference에 URL을 보관할 수 있습니다. 개발/테스트에 사용할 때마다 사용자로부터 입력을 받아 적절히 변경하고 SharedPreference에 다시 저장할 수 있습니다. 따라서 앱은 어느 서버와 통신하고 있는지 항상 알게됩니다. 사용자가 아무런 입력도하지 않으면 자산 폴더의 기본값을 SharedPreference에서 가져옵니다.

1

build variants을 통해이를 수행 할 수 있습니다.

android { 
    //... 

    productFlavors { 
     local { 
      applicationId "com.example.myapp.local" 
      versionName "1.0-local" 
     } 
     staging { 
      applicationId "com.example.myapp.staging" 
      versionName "1.0-staging" 
     } 
     prod { 
      applicationId "com.example.myapp.prod" 
      versionName "1.0-prod" 
     } 
    } 

을 한 후 다음 리소스 파일을 각 strings.xml 해당 엔드 포인트가

app/src 
    | 
    + local/res/values/strings.xml 
    | 
    + staging/res/values/strings.xml 
    | 
    + prod/res/values/strings.xml 

만들 :

은 당신의 build.gradle에 다음과 같은 것을 추가 다음

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="api_endpoint">http://10.0.2.2:3000</string> 
</resources> 

을 앱을 실행하기 전에 빌드 변형을 선택합니다. 빌드 변형 도구 창에서 실행하고 싶습니다. localDebug 또는 stagingRelease), 리소스로 액세스 할 수있는 의도 한 문자열 값을 갖게됩니다.

관련 문제