2015-09-08 24 views
-1

我想以適當的方式在android studio中存儲我的HTTP路徑,所以他們不會依賴於環境(調試,編譯等),而不是全部重複該項目。正確的方式來存儲全局HTTP路徑(Android)

這會被滿足的方法,分配在一個分離的類?

public class pathClass{ 
    public static final string HTTP_HOST = "......." 
    public static final string HTTP_URL  = "......." 
    public static final string HTTP_METHOD = "......." 
    . 
    . 
    . 
} 
+1

最好的方法是將它們作爲靜態成員存儲在單獨的類文件中。所以你在做什麼是完美的。 – priyankvex

+0

投票我的問題的人,請提供解釋爲什麼你的投票下來或只是繼續滾動..我無法知道我做錯了一個投票下來。謝謝。 –

回答

0

你說depended on the environment(debug, compile, etc..)是什麼意思還不太清楚。如果你希望你的本地計算機和CI服務器實例上有不同的常數,你可以把你的常量到local.properties文件:

sdk.dir=/android-sdk-macosx 
HTTP_METHOD="GET" 
HTTP_URL="hello/path" 
HTTP_HOST="google.com/" 

而在你build.gradle畢業生這樣說:

android{ 
    buildTypes{ 
     applicationVariants.all { variant -> 
      Properties properties = new Properties() 
      properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
      buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST') 
      buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL') 
      buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD') 
     } 
    } 
} 

然後,他們將可通過靜態常量在您的java代碼中獲得:

BuildConfig.HTTP_HOST 
BuildConfig.HTTP_METHOD 
BuildConfig.HTTP_URL 

如果您需要使用debugrelease版本的應用,你需要在相應的buildTypes塊來定義常量:

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

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

     buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST_RELEASE') 
     buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL_RELEASE') 
     buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD_RELEASE') 
    } 

    debug { 

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

     buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST_DEBUG') 
     buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL_DEBUG') 
     buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD_DEBUG') 
    } 
} 

PS當然,你可以把不是使用local.properties文件的常量右轉入build.gradle文件:

buildConfigField "String", "HTTP_HOST", "google.com" 
相關問題