日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

在AndroidStudio中配置Gradle进行 “动态编译期间,根据远程服务器地址 ,生成多类安装包”

發(fā)布時(shí)間:2024/7/5 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在AndroidStudio中配置Gradle进行 “动态编译期间,根据远程服务器地址 ,生成多类安装包” 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址:http://www.cnblogs.com/vir56k/p/4763810.html


需求:

  在產(chǎn)品開發(fā)中,經(jīng)常需要發(fā)布各個(gè)版本,每個(gè)版本的服務(wù)器地址有不同的服務(wù)器地址。比如

    • 開發(fā)?服務(wù)器使用 192.168.1.232服務(wù)器,
    • 測(cè)試?服務(wù)器使用 192.168.1.245服務(wù)器,
    • 正式上線后服務(wù)器地址是http://xxxx.com。

  在配合git開發(fā)中還要分支管理,常用的有:

    • dev
    • test
    • master

  我們起初的開發(fā)過(guò)程是:

  • 在項(xiàng)目開始時(shí),開發(fā)人員寫代碼,簽入代碼到dev分支。開發(fā)人員使用 開發(fā)服務(wù)器的服務(wù)器地址
  • 在啟動(dòng)測(cè)試時(shí),開發(fā)組負(fù)責(zé)人合并代碼到 test 測(cè)試分支。測(cè)試組負(fù)責(zé)人要修改代碼中 服務(wù)器地址的源文件,更改為 測(cè)試服務(wù)器的地址,打包分發(fā)到測(cè)試組成員開始測(cè)試。
  • 測(cè)試完畢后,測(cè)試組負(fù)責(zé)人合并代碼到 master 分支,修改服務(wù)器地址為 上線服務(wù)器地址,并測(cè)試,再到正式發(fā)布。
  •   在上面的這些步驟中我們看到,需要多次修改服務(wù)器地址,對(duì)相關(guān)的技術(shù)能力有一定要求,認(rèn)為操作還容易操作,比如寫了一個(gè)不存在的服務(wù)地址。

    ?

    改進(jìn):

      引入 Jenkins?服務(wù)自動(dòng)打包,Jenkins是個(gè)非常優(yōu)秀的自動(dòng)構(gòu)建工具,可以為我們的打包提供很棒的體驗(yàn)。使得 測(cè)試人員 在需要時(shí),自己就能進(jìn)行打包而不需要其他更多操作。當(dāng)然,這需要我們配置好構(gòu)建腳本。在使用Android studio之后,就需要了解 gradle腳本了。

    ?

    技術(shù)關(guān)鍵詞:?buildConfigField,?BuildConfig

    ?

    思路:

      在gradle腳本中,使用?buildConfigField 聲明一個(gè)字段,編譯成功后,會(huì)為這個(gè)字段生成靜態(tài)常量,我們可以在代碼中使用這個(gè)常量。而在配合 gradle 的?buildTypes 配置不同的編譯類型(比如測(cè)試,開發(fā),上線三種類型),每個(gè)類型指定不同的 字段的值。而在成功build后,gradle會(huì)為 美工不同的類型環(huán)境生成不同的apk包,比如一次性就生成了 測(cè)試,開發(fā),上線三個(gè)apk包。

    ?

    實(shí)現(xiàn)方式:

      1. 修改 build.gradle , 配置buildTypes 下的 ?buildConfigField字段 :

    buildTypes {release {minifyEnabled falsebuildConfigField("String", "API_HOST", "\"http://www.jinlinbao.com\"")signingConfig signingConfigs.zyfkey}debug245 {debuggable trueminifyEnabled falsebuildConfigField("String", "API_HOST", "\"http://192.168.1.245\"")signingConfig signingConfigs.zyfkey}}

    注意上面帶下劃線字體的部分。

      這個(gè)方法需要三個(gè)參數(shù),分別是 ?字段變量類型,變量名,和值。比如這里的?

        "String", "API_HOST", "\"http://192.168.1.245\"" // 一定注意 右斜杠后面跟著 轉(zhuǎn)義字符分號(hào)  就會(huì)生成:  public static final String API_HOST = "http://192.168.1.245";

      2. 修改 build.gradle ,?配置?defaultConfig?下的 ?buildConfigField字段 ,這是為了 代碼編譯的方便,使得在各個(gè)環(huán)境下都有?API_HOST 這個(gè)字段。

         buildConfigField("String", "API_HOST", "\"http://192.168.1.232\"")


      3. 開始 build ,完成后,可以在代碼中使用:   

    String str = BuildConfig.API_HOST;

     

    下面是完整的 配置腳本:

    apply plugin: 'com.android.application'android {signingConfigs {zyfkey {keyAlias '-'keyPassword '-'storeFile file('/Users/zhangyunfei/git/vocabulary/zhangyf.keystore')storePassword '-'}}compileSdkVersion 19buildToolsVersion "22.0.1"defaultConfig {applicationId "vir56k.vecabulary"minSdkVersion 14targetSdkVersion 19versionCode 1versionName "1.0"buildConfigField("String", "API_HOST", "\"http://192.168.1.232\"")}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'buildConfigField("String", "API_HOST", "\"http://www.jinlinbao.com\"")signingConfig signingConfigs.zyfkey}debug245 {debuggable trueminifyEnabled falsebuildConfigField("String", "API_HOST", "\"http://192.168.1.245\"")signingConfig signingConfigs.zyfkey}}productFlavors {} }dependencies {compile fileTree(dir: 'libs', include: ['*.jar']) }

    下面是代碼演示:

    package vir56k.vecabulary;import android.app.Activity; import android.os.Bundle; import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String str = BuildConfig.API_HOST;TextView txt1 = (TextView) findViewById(R.id.txt1);txt1.setText(str);}}

    這樣就可以避免因?yàn)槭韬龆鴮蝈e(cuò),也可以節(jié)省一定的時(shí)間和精力。


    另:以上的方式中通過(guò)修改defaultConfig的配置地址是無(wú)效的,Gradle在構(gòu)建的時(shí)候不是根據(jù)這里的配置構(gòu)建的,而是要通過(guò)AndroidStudio中的Build配置設(shè)置的,就像下面這樣:


    根據(jù)修改Build Variant的值來(lái)配置默認(rèn)的開發(fā)配置。至于這里配置的這個(gè)值保存在什么地方,我還一直沒(méi)找到,至少工程中的文件是沒(méi)有找到。

    總結(jié)

    以上是生活随笔為你收集整理的在AndroidStudio中配置Gradle进行 “动态编译期间,根据远程服务器地址 ,生成多类安装包”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。