編輯:關於Android編程
既然是淺析,自然也就沒有深入的地方,我也寫不出深入的地方,自己沒有用過,也不會寫出來坑人的;僅僅就是在 Android Studio 中的 Gradle 使用配置而已。
Gradle 是以 Groovy 語言為基礎,面向Java應用為主。基於DSL(領域特定語言)語法的自動化構建工具。
支持多方式依賴管理:包括從 maven 遠程倉庫、 nexus 私服、 ivy 倉庫以及本地文件系統的 jars 或者 dirs 。這也是我最喜歡的地方,操作簡單。
一個新的項目中就包含這些文件,build 是兩個,一個項目一個是 APP Model 的。另外在 APP 中可以看見有一個 manifest 文件夾,這意味著著可以有多 AndroidManifest 文件。
另外值得一說的是 gradle.properties 文件也是含有兩個,但是卻是一個是全局,一個是項目的;這與上面的 Build 文件有何區別?區別在於全局文件存在於 C:Users用戶名.gradle文件夾中,該文件有可能沒有,需要自己創建,創建後所有項目都將具有訪問權限,在該文件中一般保存的是項目的一些變量等,如果是無關緊要的變量可以保存在項目文件中,如果是用戶名密碼等變量則需要保存在全局文件中。
至於項目的配置文件一般是空的。
## This file is automatically generated by Android Studio. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file should *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. sdk.dir=D:ToolKitsAndroidsdk其中包含了你的 sdk 配置,當然你還可以配置 ndk 路徑;格式與 sdk 一樣。
include ':app'該文件中就僅僅只包含了一句話,在你的項目中如果有多個 Model 存在的時候,就可以選擇包含哪些進行編譯。
兩個大的包圍一看就明了,一個是為編譯准備的,一個是為所有項目准備的。
其中,Repositories 配置的是上面所說的依賴管理的東西,也就是依賴管理的服務器。默認是 jcenter() 你可以添加其他,多個之間不干擾。
dependencies 這個也是依賴管理的東西,上面是指定依賴管理的服務器,這個就是具體依賴什麼庫。
聯合起來也就是,依賴 jcenter() 服務中的 gradle 庫,其包名是:“com.android.tools.build” ,版本是:1.0.0 版本。
在這個中基本可以按照名稱來知曉其作用。
apply plugin: 'com.android.application'表示的是添加插件,其是可以理解為該 model 為一個 com.android.application 程序,也就是應用程序,如果你的 Model 是一個庫,那麼自然也就是:
apply plugin: 'com.android.library'
這個也就是所謂的依賴了,在這裡不光可以進行遠程依賴(上面所說的方法),也可以本地依賴:
compile fileTree(include: ['*.jar'], dir: 'libs')這句話也就是說編譯時依賴 libs 文件夾下的所有 jar 文件。
compile project(':library')這樣一句話是什麼意思?這也是依賴,不過依賴的是一個 model ,前面說了在一個項目中可以有多個 model ,這句話的意思也就是依賴一個本項目中 名稱為 library 的 model 庫。
compile 'com.android.support:appcompat-v7:21.0.3'至於這句話也就是依賴一個遠程的庫了,這個庫的作用是在低版本中使用一定的 Material Design 的東西。
其他一些介紹我以前發過文章可以看看,包括依賴 JNI 本地 aar 等等:
[Android][Android Studio] Gradle項目中添加JNI生成文件(.so文件)[Android][Android Studio] *.jar 與 *.aar 的生成與*.aar導入項目方法
先來看看基本完整的一個:
android { compileSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION as int buildToolsVersion ANDROID_BUILD_TOOLS_VERSION defaultConfig { } buildTypes { } compileOptions { } sourceSets { } lintOptions { } productFlavors { flavor1 { } flavor2 { } } signingConfigs { release { storeFile file(×.keystore) storePassword ××× keyAlias ×××× keyPassword ××× } } }可以看見如果是完整的是有很多可以配置的地方;還讓我一個個道來:
compileSdkVersion 21 buildToolsVersion 21.1.2這兩個就是指定的編譯SDK以及編輯工具版本,具體可以打開你的 SDK Manager 看看。
這個自然就是默認配置了,既然是默認配置那麼久相當於全局配置,也就是說這裡邊配置的下面的 buildTypes 中也將自動繼承了。
在這個中可以放入很多的控制,如下面 buildTypes/release 中的配置你也可以放到其中:
defaultConfig { applicationId com.example.qiujuer.application minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName 1.0 ndk { moduleName genius cFlags -DANDROID_NDK -D_RELEASE ldLibs m, log, jnigraphics abiFilters all } }在這裡,首先進行了一個 applicationId 配置,該配置不是必須,但 庫類型的 Model 將無此配置。
下面自然也就是 最小的SDK版本為 15,目標版本為:21 也就是說其中的代碼你使用的全是API21中的 Android。再有就是當前的版本代碼,版本名稱,在Eclipse 中這兩個屬性是在 AndroidManifest.xml 文件中,在這裡把其提出來單獨配置就是為了下面你可以在不同發布版本中配置不同的值。
至於這裡的 ndk 部分,這個就是我額外加入的,其作用是可以直接編譯 NDK 代碼,不需要自己執行,具體詳見:[Android] 環境配置之Android Studio開發NDK
在這裡進行配置的是你的編譯配置,可以看見這裡有一個 release ,當然也就是有 debug 部分,兩個部分配置都是一樣。
在這裡主要進行的配置是是否進行代碼混淆,所以有一個代碼混淆的開關,以及代碼混淆的具體文件,文件有兩種,無論哪種都行。
很多人或許不知道這個部分是干什麼的,其是看看下面就明了了:
compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 }在這裡你可以進行 Java 的版本配置,以便使用對應版本的一些新特性。
這個部分,看名字應該有個大概意思就是說源碼設置,其是很多從 Eclipse 中遷移過來的代碼,大部分中都將帶有這個設置,因為 Eclipse的文件夾與 AS 不盡相同,所以需要手動指定。
sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } }以上是一些常用的設置,其中最後一個是引用 *.so 文件的時候使用的方法。
這個其實應該寫到最後的,因為這個是設置 編譯的 lint 開關。
程序在buid的時候,會執行lint檢查,有任何的錯誤或者警告提示,都會終止構建,我們可以將其關掉。
lintOptions { abortOnError false }
productFlavors { flavor1 { packageName='com.example.qiujuer.application1' manifest.srcFile 'exampleapk/AndroidManifest1.xml' } flavor2 { packageName='com.example.qiujuer.application2' manifest.srcFile 'exampleapk/AndroidManifest2.xml' } }不過,對於這個我並不常用,可以說基本沒有用。
這個相信大伙都知道吧,就是為包簽名的配置,你可以設置具體的簽名文件,簽名密碼等等:
signingConfigs { release { storeFile file(×.keystore) storePassword ××× keyAlias ×××× keyPassword ××× } }這個可以不用自己創建,你可以點擊 build/generate signed apk,在其中選擇你的文件或者創建簽名文件,設置密碼等等,然後選擇記住密碼,然後就會看見有這個配置了。
在 APP Model build.gradle 文件根部我們加上:
task clearApk(type: Delete) { delete '../release/' + POM_ARTIFACT_ID + '_' + VERSION_NAME + '.apk' } task makeApk(type: Copy) { from('build/outputs/apk/') into('../release/') include('app-debug.apk') rename('app-debug.apk', POM_ARTIFACT_ID + '_' + VERSION_NAME + '.apk') } makeApk.dependsOn(clearApk, build)
先說說這個 Case 的目的,其目的是拷貝 build/outputs/apk下面的debug apk文件到項目根目錄的 release 文件夾下,並且更名。
但是細心的朋友應該會看見其中有兩個參數:POM_ARTIFACT_ID VERSION_NAME 這兩個從哪裡來?
前面最開始講過:gradle.properties 文件,這兩個就是寫在項目根部的 gradle.properties 文件中:
寫好了,怎麼運行呢?兩種方式,第一種,代碼 task 上右擊,run():
第二張,命令行方式:
輸入後回車,等待執行完成,成功後會出現:
現在看看項目中:
的確是成功了!
這只是一個很基本的用法,限於篇幅就差不多這麼多吧,如果大家有疑問,可以評論回復,我如果積累了一定量,我好針對問題寫新的一些用法,不然我也很沒有頭緒的。
在上一篇博文中,我主要講解了XML圖像資源中的圖層資源,在此圖像資源博文中我會給大家陸續講解XMl圖像資源的圖像狀態資源、圖像級別資源、淡入淡出資源、嵌入圖像資源、剪切圖
AlertDialog生成的對話框可分為4個區域:圖標區,標題區,內容區,按鈕區結構如圖:AlertDialog對話框的使用:1,創建AlertDialog.Builde
android 程序打包成apk,如果在是命令行方式,一般都要經過如下步驟:1.用aapt命令生成R.java文件2.用aidl命令生成相應java文件3.用javac命
React-Native Android 與 IOS 共用代碼React-Native 開發的App, 所有組件iOS & Android 共用, 共享一份代