1. 程式人生 > >4.0、Android Studio配置你的構建

4.0、Android Studio配置你的構建

Android構建系統編譯你的app資源和原始碼並且打包到APK中,你可以用來測試,部署,簽名和釋出。Android Studio使用Gradle,一個高階的構建套件,來自動化和管理構建程序,同時可以允許你靈活的自定義構建配置。每個構建配置可以定義它自己的程式碼和資源集合。

Gradle和Android外掛獨立於Android Studio執行。這就意味著你可以在你的機器上在命令列、Android Studio、或者沒有安裝Android Studio的機器中構建你的Android APP。

Android構建系統的靈活性允許你在不修改你的APP核心程式碼的情況下執行自定義的構建配置。

構建程序

構建程序包含很多工具和程序來幫助將你的專案轉化為APK(Android Application Package)。構建程序非常靈活。
這裡寫圖片描述
遵循如下幾步:
1、 編譯器將你的原始碼轉化為DEX(Dalvik Executable)檔案,包含Android裝置中可以執行的位元組碼和其他編譯的資原始檔。
2、 APK打包工具將DEX檔案和編譯後的資源打包到一個單獨的APK中,但是在你安裝和部署之前,APK必須進行簽名。
3、 APK打包工具會用debug key或者release key對你的APK進行簽名。
4、 在你生成最終的APK之前,打包工具只用aipalign工具來優化你的程式碼。這可以在app執行時降低記憶體。

自定義構建配置

Build Types
構建型別定義在構建和打包app是Gradle使用的一些屬性配置。在不同的開發週期是不同的。比如,debug 構建型別開啟除錯選項並且使用debug key對APK進行簽名。而release 構建型別可能需要壓縮、模糊並且使用release key對APK進行簽名。為了構建你的app,你必須至少宣告一種型別。

Product Flavors
Product flavors代表釋出給使用者的不同版本的APP。比如,免費和付費的APP版本。你可以通過定製Product flavors來使用不同的程式碼和資源,同時共用所有版本APP可複用的部分。Product Flavors是可選的,你必須手動建立它們。

Build Variants
Build variant是build type和product flavor混合的產物。這是Gradle用來構建你的app的相關配置。通過使用build variant,你可以在開發中構建你的product flavor的debug版本,或者product flavor的簽名的釋出版本。雖然你沒有直接配置build variant,你可以通過配置build type和product flavor來實現對build variant的配置。建立額外的build type或者product flavor同樣可以建立額外的build variant。

Mainfest Entries
你可以在build variant配置裡宣告manifest檔案裡的一些屬性值。這些值會腹瀉manifest檔案中已經存在的值。

Dependencies
構建系統管理專案的依賴,從本地的依賴到遠端的依賴。這個可以讓你方便的對依賴進行管理。

Signing
構建系統允許你在構建配置中宣告簽名設定,這可以在你構建的時候自動的對你的APK進行簽名。構建系統不會對release版本進行簽名,除非你定義一個簽名配置。

ProGuard
構建系統允許你為每一個build variant宣告一個不同的ProGuard規則檔案。

構建配置檔案

建立自定義的配置需要你對一個或多個構建配置檔案進行更改,或者build.gradle檔案。這些文字使用DSL來描述和控制構建邏輯。
當你建立一個新的專案時,Android Studio自動為你建立一些檔案,如圖:
這裡寫圖片描述
這是一些Gradle構建配置檔案,作為Android應用標準專案結構的一部分。

Gradle設定檔案

gradle.settings檔案位於專案的根目錄下,來通知Gradle在構建你的應用的時候需要包括哪些模組,大部分專案如下:

include:app

頂層的構建檔案

位於專案根目錄的build.gradle檔案,定義了可以應用於你的專案的所有模組的構建配置。預設情況下,頂層的構建檔案在buildscript{}中定義Gradle repositories和依賴,這可以應用到專案的所有的模組中。如下:

/**
 * The buildscript {} block is where you configure the repositories and
 * dependencies for Gradle itself--meaning, you should not include dependencies
 * for your modules here. For example, this block includes the Android plugin for
 * Gradle as a dependency because it provides the additional instructions Gradle
 * needs to build Android app modules.
 */

buildscript {

    /**
     * The repositories {} block configures the repositories Gradle uses to
     * search or download the dependencies. Gradle pre-configures support for remote
     * repositories such as JCenter, Maven Central, and Ivy. You can also use local
     * repositories or define your own remote repositories. The code below defines
     * JCenter as the repository Gradle should use to look for its dependencies.
     */

    repositories {
        jcenter()
    }

    /**
     * The dependencies {} block configures the dependencies Gradle needs to use
     * to build your project. The following line adds Android Plugin for Gradle
     * version 2.0.0 as a classpath dependency.
     */

    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
    }
}

/**
 * The allprojects {} block is where you configure the repositories and
 * dependencies used by all modules in your project, such as third-party plugins
 * or libraries. Dependencies that are not required by all the modules in the
 * project should be configured in module-level build.gradle files. For new
 * projects, Android Studio configures JCenter as the default repository, but it
 * does not configure any dependencies.
 */

allprojects {
   repositories {
       jcenter()
   }
}

模組構建檔案

模組的build.gradle檔案,位於//目錄下,允許你對特定的模組進行構建配置。配置這些構建設定允許你提供自定義的打包選項,比如額外的build type和product flavor,複寫mainfies中的設定或者頂層build.gradle檔案的配置。程式碼如下:

/**
 * The first line in the build configuration applies the Android plugin for
 * Gradle to this build and makes the android {} block available to specify
 * Android-specific build options.
 */

apply plugin: 'com.android.application'

/**
 * The android {} block is where you configure all your Android-specific
 * build options.
 */

android {

  /**
   * compileSdkVersion specifies the Android API level Gradle should use to
   * compile your app. This means your app can use the API features included in
   * this API level and lower.
   *
   * buildToolsVersion specifies the version of the SDK build tools, command-line
   * utilities, and compiler that Gradle should use to build your app. You need to
   * download the build tools using the SDK Manager.
   */

  compileSdkVersion 23
  buildToolsVersion "23.0.3"

  /**
   * The defaultConfig {} block encapsulates default settings and entries for all
   * build variants, and can override some attributes in main/AndroidManifest.xml
   * dynamically from the build system. You can configure product flavors to override
   * these values for different versions of your app.
   */

  defaultConfig {

    /**
     * applicationId uniquely identifies the package for publishing.
     * However, your source code should still reference the package name
     * defined by the package attribute in the main/AndroidManifest.xml file.
     */

    applicationId 'com.example.myapp'

    // Defines the minimum API level required to run the app.
    minSdkVersion 14

    // Specifies the API level used to test the app.
    targetSdkVersion 23

    // Defines the version number of your app.
    versionCode 1

    // Defines a user-friendly version name for your app.
    versionName "1.0"
  }

  /**
   * The buildTypes {} block is where you can configure multiple build types.
   * By default, the build system defines two build types: debug and release. The
   * debug build type is not explicitly shown in the default build configuration,
   * but it includes debugging tools and is signed with the debug key. The release
   * build type applies Proguard settings and is not signed by default.
   */

  buildTypes {

    /**
     * By default, Android Studio configures the release build type to enable code
     * shrinking, using minifyEnabled, and specifies the Proguard settings file.
     */

    release {
        minifyEnabled true // Enables code shrinking for the release build type.
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * The productFlavors {} block is where you can configure multiple product
   * flavors. This allows you to create different versions of your app that can
   * override defaultConfig {} with their own settings. Product flavors are
   * optional, and the build system does not create them by default. This example
   * creates a free and paid product flavor. Each product flavor then specifies
   * its own application ID, so that they can exist on the Google Play Store, or
   * an Android device, simultaneously.
   */

  productFlavors {
    free {
      applicationId 'com.example.myapp.free'
    }

    paid {
      applicationId 'com.example.myapp.paid'
    }
  }
}

/**
 * The dependencies {} block in the module-level build configuration file
 * only specifies dependencies required to build the module itself.
 */

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:22.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Gradle屬性檔案

Gradle也包括兩個屬性檔案,在專案的根目錄。你可以用來宣告Gradle構建套件的設定:

Gradle.properties
這裡你可以設定全域性Gradle設定。

Local.properties
為你的構建系統配置本地環境屬性,比如SDK安裝位置。因為這個檔案的內容是Android Studio自動生成的,針對本地的開發環境,所以你不需要手動更改這個檔案或者將其新增到你的版本控制系統中。

使用Gradle同步專案

當你更改了你的專案中的構建配置檔案之後,Android Studio需要你同步你的專案,這樣你就可以匯入你的專案配置並且執行一些檢測來確保你的配置不會導致建立構建錯誤。

同步你的專案檔案,在你更改之後,會有個提示框,點選Sync Now。如果發現問題,Android Studio會報錯:

這裡寫圖片描述

Source Sets

Android Studio為每個模組合理的組織程式碼和資源。一個模組的main目錄包含了程式碼和資源。

本文作者:宋志輝
個人微博:點選進入

相關推薦

4.0Android Studio配置構建

Android構建系統編譯你的app資源和原始碼並且打包到APK中,你可以用來測試,部署,簽名和釋出。Android Studio使用Gradle,一個高階的構建套件,來自動化和管理構建程序,同時可以允許你靈活的自定義構建配置。每個構建配置可以定義它自己的程式碼

4.2Android Studio壓縮的程式碼和資源

為了讓你的APK檔案儘可能的小,你需要在構建的時候開啟壓縮來移除無用的程式碼和資源。 程式碼壓縮可在ProGuard中使用,可以檢測和清除無用的類,變數,方法和屬性,甚至包括你引用的庫。ProGuard同樣可以優化位元組碼,移除無用的程式碼,並且模糊剩下的類,

7.0Android Studio命令列工具

命令列工具分成SDK工具和平臺工具。 SDK工具 SDK工具跟隨SDK安裝包安裝並隨時更新。 Virtual Device 工具 1、 Android Virtual Device Manager 提供了一個圖形化的圖形使用者介面,你可以建立

第一次使用Android Studio應該知道的一切配置(三):gradle項目構建

gen 官方 配置文件 conf 什麽 學習 package ack 處的 ?【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae

第一次使用Android Studio應該知道的一切配置

出現 jpg rcu true 導入 職位 文章 加載 什麽 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/43909

第一次使用Android Studio應該知道的一切配置(二):新建一個屬於自己的工程並安裝Genymotion模擬器

人性 pro net 參考 json irb 一個地方 vid 調試 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/439

Android Studio安裝部署系列】九Android Studio常用配置以及快捷鍵

har 常用配置 int intel 你在 tom ron androi use 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 整理Android Studio的常用配置和快捷鍵。 常用配置 顯示行號 臨時顯示 永久顯示 File&md

安裝MongoDB最新版4.0配置和啟動實例

logs 默認端口 info mkdir -p 其他 gem nosql數據庫 eml pytho MongoDB簡介: 1.MongoDB是一款基於分布式文件存儲的開源的文檔數據庫,並且是業內領先的NoSQL數據庫,用C++編寫而成。2.在高負載的情況下,添加更多的節點,

ndk-build配置Android Studio jni的配置以及jni常見問題的解決

           最近專案用到了jni比較頻繁,android studio 配置jni也是必須的。但不知道是不是運氣問題,我在自己電腦使用jni一點問題都沒有,可以說是無障礙。 但是,一

Android開發快速入門(環境配置Android Studio安裝)

Android是一種激動人心的開源移動平臺,它像手機一樣無處不在,得到了Google以及其他一些開放手機聯盟成員(如三星、HTC、中國移動、Verizon和AT&T等)的支援,因而不能不加以學習,否則你承擔不起為此付出的代價。 好在Android開發入門很容易,即使沒有Android手機都沒關係,只

6.4Android Studio的GPU Monitor

Android Monitor包含GPU Monitor,它將視覺化的顯示渲染窗體的時間。GPU Monitor可以幫助你: 1、 迅速檢視UI窗體生成 2、 辨別是否渲染管道超出使用執行緒時間

Android Studio配置GreenDAO 3.2.0和使用方法

我相信,在平時的開發過程中,大家一定會或多或少地接觸到SQLite。然而在使用它時,我們往往需要做許多額外的工作,像編寫SQL語句與解析查詢結果等。所以,適用於Android ORM框架也就孕育而生了,現在市面上主流的框架有OrmLite、SugarORM、Active An

《ArcGIS Runtime SDK for Android開發筆記》——(2)Android Studio基本配置與使用

1、前言  在上一篇文章《Android Studio下載與安裝》裡我們已經介紹了Android Studio的下載與安裝步驟,這一篇我們將針對Android Studio的基本常見使用做一個簡單介紹。 2、基本配置 2.1、主題設定 開啟File > Settings > Appearanc

android studio 配置 Genymotion 以及Genymotion安裝配置

免費 開始 安裝 rac 百度雲 速度 ext none oca 1.下載安裝 1-中文官網 網址:http://www.genymotion.net/ 進去後點擊註冊.登陸你的賬號或者註冊一個新的賬號 2-下載 點擊右上角的試用,下載下來就可以了 3-訪問速度過慢的解決

android studio配置android開發環境

form tps android 禁用 圖片 ron dea ren dex 1、下載安裝android-studio-bundle 地址:https://developer.android.com/sdk/index.html 註意:指定andro

Android Studio配置

準備 即使 下載sdk -- gradle nts 內置 國外 了解 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/4

Android Studio安裝部署系列】十八Android studio更換APP應用圖標

tail map 安全區 大小 next detail 有時 ash blog 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 Android Studio新建項目後會有一個默認圖標,那麽如何更換圖標呢? 替換圖標 這個方案不建議直接在已有項目上更換

Android Studio安裝部署系列】二十二Android studio自動生成setget方法

setter 自動生成 全選 style 原創文章 back .com 安裝部署 dash 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 操作步驟 將光標放置我們所要生成get,set方法的實體類空白處——然後右鍵—&mdas

Android Studio安裝部署系列】二Android Studio開發環境搭建

alt nand inf ima str php span 開發環境搭建 index.php 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 Android Studio開發環境安裝步驟 下載Android Studio 下載地址: http://ww

Android Studio安裝部署系列】二十七Android studio修改項目名稱和包名

detail 如何 裏的 繼續 想要 example 發現 and 版權 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 概述 實際項目開發中可能碰到項目名稱寫錯了或者需要修改,而且包名可能也想要修改,那麽如何操作呢。 本文是在Android Studi