gradle使用總結

快速地導入別人的項目

當我們在AS中導入別人的項目時(如github中的開源項目),有時會發現特別地慢,這是因為如果項目中配置的gradle版本、compileVersion、buildToolsVersion等在你的電腦里沒有時,AS就會去網上重新下載。。然后由于天朝偉大的防火墻,速度比較感人。。所以我們可以修改gradle版本配置,以快速導入別人的項目。

** 需要修改的幾個地方如圖 **:

  1. 把app module的build.gradle文件中的buildToolsVersion換成你本地已經下載好的版本;不過minSdkVersion、compileSdkVersion、targetSdkVersion等sdk版本不建議更改,因為修改這幾個配置會對項目有影響。
  2. 替換掉gradle版本:
    1). 在其它項目中(你電腦本地正常運行的項目)把wrapper文件夾中的兩個文件拷過來,替換掉要導入項目里的兩個文件;
    2). 修改項目根目錄下build.gradle的dependencies { classpath '...'},照樣從別的項目中拷過來,版本號要與步驟一中的兩個文件對應。

apk簽名配置

signingConfigs {
    releaseSign {
        keyAlias '***'
        keyPassword '***'
        storeFile file('your keystore file path')
        storePassword '***'
    }
}

或者你可以直接在AS中進行圖形化操作

  1. app文件夾上右鍵 ——> Open Moudule Settings


  2. 在Signing選項卡下面填寫好簽名配置


  3. 在Build Types選項卡下 release版本的 Signing Config選為你剛才所新建的簽名配置,點擊ok確定,大功告成


其實很多的gradle配置都可以在這個界面完成,自己慢慢摸索(__)

多渠道打包

  1. 在AndroidManifest.xml文件中添加metadata
    <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>

  2. 在build.gradle文件中添加

  productFlavors {
      xiaomi {}
      wandoujia {}
  }
  productFlavors.all {
      flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  }
  1. 在AS的命令行運行命令 gradlw build(如果打包時需要簽名要先配置好signingConfigs),ok,打包完成后就可以在app/build/outputs/apk目錄下看到生成的apk文件。

構建參數

1. 動態配置不同構建版本中的appkey

在我們使用一些第三方sdk時(比如環信),debug版本和release版本需要使用不同的appkey,身患懶癌的我們總不能每次構建的時候都改來改去吧,既麻煩又容易出錯。好在借助manifestPlaceholders可以幫我們自動替換。
拿環信的appkey舉例:
1). 在AndroidManifest文件中添加
<meta-data android:name="EASEMOB_APPKEY" android:value="${EASEMOB_APPKEY_VALUE}"/>
2). 在build.gradle文件中添加

buildTypes {
    release {
        manifestPlaceholders = [EASEMOB_APPKEY_VALUE: "yourreleaseappkey"]
    }
    debug {
        manifestPlaceholders = [EASEMOB_APPKEY_VALUE: "yourdebugappkey"]
    }
}

2. 動態配置BuildConfig

一般我們開發應用時都會有測試環境和生產環境,測試環境和生產環境使用的服務器地址是不一樣的,每次要打包時都要修改這個地址顯然麻煩,借助BuildConfig就可以實現動態配置了。

BuildConfig.java是AS自動生成的一個java類,使用方式類似于R類,只能由AS管理,我們不能手動修改。我們在gradle文件中做些配置,就可以往BuildConfig.java添加靜態常量,然后就可以在項目中像引用其它類代碼一樣引用這個靜態常量。Gradle會在我們打包的時候根據構建版本對這個靜態常量的值進行動態配置。

在gradle文件中添加

buildTypes {
    release {
        buildConfigField('String', 'API_URL', "\"http://test.haha.com\"")
    }

    debug {
        buildConfigField('String', 'API_URL', "\"http://www.haha.com\"")
    }
}

然后點擊gradle同步按鈕進行同步,在BuildConfig.java文件中就會生成:
public static final String API_URL = "http://www.haha.com";

buildConfigField 一共有3個參數,第一個是要定義的常量值的數據類型,這個類型和Java的類型是一樣的,第二個參數是常量名,第三個參數是常量值。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評論 25 708
  • 這一章主要針對項目中可以用到的一些實用功能來介紹Android Gradle,比如如何隱藏我們的證書文件,降低風險...
    acc8226閱讀 7,694評論 3 25
  • 轉載注明出處:http://www.lxweimin.com/p/5255b100930e 0. 前言 完全由個人翻...
    王三的貓阿德閱讀 2,575評論 0 4
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,981評論 19 139
  • 挫折,你好 高一(6)班 劉子鈺 每個人的一生都是喜悅參半,酸甜交加的,經歷過成功的喜悅,也難免體會過失敗的痛苦,...
    山師華清閱讀 325評論 0 1