編輯:關於Android編程
1.Introduction
1.1.gradle構建系統的目標
1)讓重用代碼和資源變得更加容易
2)讓創建同一應用程序的不同版本變得更加容易,無論是多個apk發布版本還是同一個應用的不同定制版本。讓構建過程變得更加容易配置,擴展和定制 1.2.為什麼使用gradle
1)它允許通過插件創建自定義的構建邏輯
2)采用了Domain Specific Language(DSL語言)來描述和控制構建邏輯。
3)構建文件基於Groovy,並且允許通過混合聲明DSL元素和使用代碼來控制DSL元素以控制自定義的構建邏輯。
4)支持Maven或者Ivy的依賴管理。
5)插件可以提供自己的DSL和API以供構建文件使用。 2.Basic Project(基本項目)
2.1.簡單的構建文件
//項目本身需要聲明自己的倉庫和依賴關系
//這裡的配置只影響控制構建過程的代碼,不影響項目源代碼
buildscript {//配置了驅動構建過程的代碼
repositories {//倉庫
mavenCentral()//聲明了使用Maven倉庫
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.1'//並且聲明了一個maven文件的依賴路徑,包含了1.3.1版本android gradle插件的庫。
}
}
//
apply plugin: 'android'
//配置了所有android構建過程需要的參數。這裡也是Android DSL的入口點
android {
compileSdkVersion 19//要配置目標編譯SDK版本
buildToolsVersion "19.0.0"//編譯工具版本
}
//設置腳本的運行環境
buildscript {
//支持java 依賴庫管理(maven/ivy),用於項目的依賴。
repositories {
mavenCentral()
}
//依賴包的定義。支持maven/ivy,遠程,本地庫,也支持單文件
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
//聲明構建的項目類型,這裡當然是android了
apply plugin: 'android'
//設置編譯android項目的參數
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
//Android默認配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
//測試所在的路徑,這裡假設是tests文件夾,沒有可以不寫這一行
instrumentTest.setRoot('tests')
}
//這個是解決lint報錯的代碼
lintOptions {
abortOnError false
}
/**
* 簽名設置
*/
signingConfigs {
myConfigs {
storeFile file("簽名文件地址")
keyAlias "..."
keyPassword "..."
storePassword "..."
}
}
/**
* 混淆設置
*/
buildTypes {
release {
signingConfig signingConfigs.myConfigs
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/**
* 渠道打包(不同包名)
*/
productFlavors {
qqqq {
applicationId = '包名'
}
hhhhh {
applicationId='包名'
}
}
}
/**
* .so文件的導入
*/
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
tasks.withType(Compile) {
compileTask -> compileTask.dependsOn copyNativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = [new File(buildDir, 'lib')]
}
//依賴庫
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
-dependencies {
//單文件依賴
compile files(‘libs/android-support-v4.jar’)
//某個文件夾下面全部依賴
compile fileTree(dir: ‘libs’, include: ‘*.jar’)
}
android {
}
- 2.3遠程依賴
repositories {
//從中央庫裡面獲取依賴
mavenCentral()
//或者使用指定的本地maven 庫
maven{
url "file://F:/githubrepo/releases"
}
//或者使用指定的遠程maven庫
maven{
url "遠程庫地址"
}
}
dependencies {
//應用格式: packageName:artifactId:version
compile 'com.google.android:support-v4:r13'}
android {
}
3.android library 依賴
dependencies {
compile(name: 'pulltorefresh', ext: 'aar')
}
4.
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
//為Android的gradle插件指定位置和版本
classpath 'com.android.tools.build:gradle:1.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
//事先對整個構建可能包含的所有工程進行統一的配置
allprojects {
repositories {
jcenter()
}
}
build.
apply plugin: 'com.android.library'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
//defaultConfig元素裡的配置對應AndroidManifest.xml文件,優先級比AndroidManifest.xml文件裡的配置高
defaultConfig {
minSdkVersion 15
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
versionCode 1
versionName "1.0"
}
//buildTypes元素默認定義了debug和release兩種構建
buildTypes {
//debug構建出來的APK將包含調試符號,並且以debug key進行簽名
release {//release類型的默認是沒有簽名的
minifyEnabled false//minifyEnabled為true表示啟用自動清除無用代碼
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//proguardFiles指定了代碼混淆使用的相關文件
}
}
}
//指定此工程依賴什麼
dependencies {
//compile這個方法指定要添加什麼來編譯主程序,這些東西將最終被打包進APK中。
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.google.code.gson:gson:2.3'
compile project(':model')
}
5.Android app/build.gradle。
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
說白了就是數據庫和表的關系
5.4.apply plugin: ‘android’:聲明構建的項目類型,這裡當然是android了。。。
5.5.android{}:設置編譯android項目的參數,接下來,我們的構建android項目的所有配置都在這裡完成。
6.補充簡介:
1)Gradle構建腳本(build.gradle)指定了一個項目和它的任務。 2)Gradle屬性文件(gradle.properties)用來配置構建屬性。 3)Gradle設置文件(gradle.settings)對於只有一個項目的構建而言是可選的,如果我們的構建中包含多於一個項目,那麼它就是必須的,因為它描述了哪一個項目參與構建。每一個多項目的構建都必須在項目結構的根目錄中加入一個設置文件。7.依賴管理:
7.1.倉庫是一種存放依賴的容器 7.2.Gradle支持的倉庫格式:Ivy倉庫/ Maven倉庫/ Flat directory倉庫,更多參考http://blog.jobbole.com/72992/ 7.3.目前只考慮在構建中加入Maven倉庫:
repositories {
maven {
url "http://maven.petrikainulainen.net/repo"
}
}
3)如果想通過本地文件系統地址添加一個Maven倉庫,我們可以將以下代碼片段加入到build.gradle文件中:
repositories {
maven {
url "../maven-repo"
}
}
7.4.在加入Maven倉庫時,Gradle提供了三種“別名”供我們使用
**1)**mavenCentral()別名,表示依賴是從Central Maven 2 倉庫中獲取的。
**2)**jcenter()別名,表示依賴是從Bintary’s JCenter Maven 倉庫中獲取的。
3)mavenLocal()別名,表示依賴是從本地的Maven倉庫中獲取的。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'//用來編寫單元測試
compile 'com.android.support:appcompat-v7:23.2.1'
}
360奇酷手機如何刷機
360奇酷手機出自酷派和360合資公司,奇酷手機以及酷派手機都屬於安卓系統,那麼奇酷手機、酷派手機怎麼刷機呢?手機有毛病可以嘗試恢復手機出廠設置,操作方法如
Eclipse中查看Android模擬器SD卡目錄
有時候用到Android模擬器來模擬SD卡相關操作,在Eclipse中可以直接查看SD卡目錄; 首先,新建模擬器的時候要創建SD卡,存儲的大小根據需要創建; 啟動模擬
Android中TabLayout結合ViewPager實現頁面切換效果
先看看效果,如圖:1.因為TabLayout是Android Design Support Library官方庫的一個控件,所以使用TabLayout時候需要先添加對該庫
Android自定義屬性為應用程序設置全局背景
關於自定義屬性,我們用的比較多的時候就是在自定義view的時候了,其實自定義屬性還有一些其余的妙用。這裡講解一個利用自定義的屬性為應用程序全局的替換背景的例子。1.And