Gradle for Android 使用之旅之從創(chuàng)建項(xiàng)目到發(fā)布

Gradle Build Files in Android 第二章

從創(chuàng)建項(xiàng)目到發(fā)布

2.1 Setting Project Properties

問題

如何通過ext節(jié)點(diǎn)把一些常量從build.gradle中移除加入到gradle.properties蚁鳖,或者在控制臺(tái)-p設(shè)置值。

解決方法

  • build.gradle中通過ext把例如版本號(hào)薇芝,版本名集中設(shè)置难礼。

    例如:

    ext {
      appcompat_version = '24.2.1'
      versionCodes=13
      versionNames='2.3'
    }

使用:

    defaultConfig {
       applicationId "com.branch.www.gradledemo"
       minSdkVersion 18
       targetSdkVersion 24
       versionCode versionCodes
       versionName versionNames
    }

或

    compile("com.android.support:appcompat-v7:$appcompat_version")
  • 使用gradle.properties

    例如在gradle.properties加入:

      login='user'
      pass='my_long_and_highly_complex_password'
    

    然后在build.gradle中使用

      repositories {
          maven {
              url 'http://repo.mycompany.com/maven2'
              credentials {
              username 'user'
              password 'password'
          }
       }
      }
    

    或你可以在控制臺(tái)使用-P輸入login,'password'參數(shù)給properties設(shè)值雷酪。

      gradlew -Plogin=me -Ppassword=this_is_my_password assembleDebug
    

2.2 轉(zhuǎn)換Eclipse Android項(xiàng)目到Android Studio

問題

早期都是使用Eclipse開發(fā)晃痴,現(xiàn)在想要使用Android Studio踢步。

解決方法

Android Studio自帶導(dǎo)入向?qū)鳎鶕?jù)向?qū)б徊揭徊阶觥?/p>

androidstudio_from_eclipse_project
androidstudio_from_eclipse_project

2.3 轉(zhuǎn)換Eclipse Android項(xiàng)目到Android Studio通過Eclipse

問題

早期都是使用Eclipse開發(fā)冬阳,現(xiàn)在想要使用Android Studio蛤虐。(推薦使用2.2方式)

解決方法

右鍵項(xiàng)目Export->Generate Gradle build files->選擇這個(gè)項(xiàng)目下的所有l(wèi)ibrary->finish

project_from_eclipse
project_from_eclipse

然后就會(huì)生成一個(gè)build.gradle

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':appcompat_v7')
}

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

2.4 更新Gradle 版本

問題

根據(jù)需要更新Gradle版本

解決方法

寫wrapper或修改gradle properties url。

  • 添加一個(gè) wrappertask到build.gradle

      task wrapper(type: Wrapper) {
        gradleVersion = 2.2
      }
    

    修改版本后在控制臺(tái)執(zhí)行gradlew wrapper就可以使用新的gradlew版本肝陪。

  • 或修改gradle/wrapper 目錄下的.properties

    uppdate_newer_gradle_version
    uppdate_newer_gradle_version

    更改相應(yīng)的版本即可驳庭。

2.5 在不同項(xiàng)目直接共享設(shè)置

問題

在一個(gè)項(xiàng)目中有多個(gè)library項(xiàng)目,可以去除這些见坑,modules重復(fù)的設(shè)置嚷掠。

解決方法

  • 在頂層build.gradle中定義了allprojects節(jié)點(diǎn)

      allprojects {
          repositories {
              jcenter()
          }
      }
    

    果在單個(gè)項(xiàng)目中如果沒有特殊情況則不需要重復(fù)定義倉(cāng)庫(kù)。

  • 使用subprojects

    由于gradle是多項(xiàng)目工程荞驴,如果使用subprojects則可以一起定義所有l(wèi)ibrary項(xiàng)目設(shè)置不皆。

      subprojects {
          apply plugin: 'com.android.library'
      }
    

    則所有l(wèi)ibrary可以去掉apply plugin

2.6 簽名APK包

問題

經(jīng)過正式簽名發(fā)布App到應(yīng)用市場(chǎng)

解決方法

創(chuàng)建keystore,使用它簽名APK熊楼。使用signingConfigs配置如下:

    android {
        // ... other sections ...
        signingConfigs {
            release {
                keyAlias 'my_alias'
                keyPassword 'password'
                storeFile file('/Users/kousen/keystores/myapp.keystore')
                storePassword 'password'
            }
        }
    }

然后在buildTypes中設(shè)置對(duì)應(yīng)的簽名

    android {
        // ... other sections ...
        buildTypes {
            release {
                // ... other settings ...
                signingConfig signingConfigs.release
            }
        }
    }

在控制臺(tái)輸入gradlew assembleRelease則會(huì)build一個(gè)簽名包到/build/outputs/apk目錄下霹娄。

2.7 使用Android Studio打包

androidstudio_build_release_apk.png
androidstudio_build_release_apk.png

如果沒有keystore則根據(jù)向?qū)?chuàng)建能犯。

第三章:gradle配置進(jìn)階

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市犬耻,隨后出現(xiàn)的幾起案子踩晶,更是在濱河造成了極大的恐慌,老刑警劉巖枕磁,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渡蜻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡计济,警方通過查閱死者的電腦和手機(jī)茸苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沦寂,“玉大人学密,你說我怎么就攤上這事〈兀” “怎么了腻暮?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)毯侦。 經(jīng)常有香客問我哭靖,道長(zhǎng),這世上最難降的妖魔是什么叫惊? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任款青,我火速辦了婚禮,結(jié)果婚禮上霍狰,老公的妹妹穿的比我還像新娘。我一直安慰自己饰及,他們只是感情好蔗坯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燎含,像睡著了一般宾濒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屏箍,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天绘梦,我揣著相機(jī)與錄音,去河邊找鬼赴魁。 笑死卸奉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颖御。 我是一名探鬼主播榄棵,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了疹鳄?” 一聲冷哼從身側(cè)響起拧略,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘪弓,沒想到半個(gè)月后垫蛆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腺怯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年袱饭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢喉。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宁赤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栓票,到底是詐尸還是另有隱情决左,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布走贪,位于F島的核電站佛猛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坠狡。R本人自食惡果不足惜继找,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逃沿。 院中可真熱鬧婴渡,春花似錦、人聲如沸凯亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)假消。三九已至柠并,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間富拗,已是汗流浹背臼予。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啃沪,地道東北人粘拾。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谅阿,于是被迫代替她去往敵國(guó)和親半哟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酬滤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,099評(píng)論 25 707
  • Android Studio正式版早已經(jīng)發(fā)布了,默認(rèn)使用Gradle構(gòu)建寓涨,GitHub上80%的Android項(xiàng)目...
    流哲羽閱讀 2,873評(píng)論 1 13
  • Google引入Gradle和Android Studio時(shí)盯串,希望更容易的去重用代碼、創(chuàng)建構(gòu)造變體和配置戒良、自定義構(gòu)...
    sollian閱讀 3,319評(píng)論 0 10
  • 失戀者說:“感情是美好的東西体捏,但它卻是最難通融的東西。所以對(duì)感情糯崎,如果你爭(zhēng)取不到的話几缭,最好而且也是最聰明的辦法是當(dāng)...
    心生六一閱讀 1,502評(píng)論 1 27
  • 二六 感謝今天沒有下雨 感謝車站的那位大哥 感謝今天遇到的所有人 愿我們的環(huán)境越來越正 記:不知道未來會(huì)發(fā)生什么,...
    XBIN閱讀 254評(píng)論 0 0