編輯:關於Android編程
*.jar:庫/build/intermediates/bundles/debug(release)/classes.jar
*.aar:庫/build/outputs/aar/libraryname.aar
*.jar:只包含了class文件與清單文件,不包含資源文件,如圖片等所有res中的文件。
*.aar:包含所有資源,class以及res資源文件全部包含
如果你只是一個簡單的類庫那麼使用生成的*.jar文件即可;如果你的是一個UI庫,包含一些自己寫的控件布局文件以及字體等資源文件那麼就只能使用*.aar文件。
*.jar:拷貝到:libs目錄,eclipse直接導入即可,AndroidStudio項目中添加:
[java]view plaincopy
分別添加了”repositories“與更改了”dependencies“,然後重新編譯一次項目就可以正常使用了。
這時打開你的項目地址”\build\intermediates\exploded-aar\“你會發現下面多了一個文件夾”genius“打開後能看見裡邊包含了一個”classes.jar“文件與一些資源文件和”R.txt“文件。
這就是AndroidStudio自動解析了aar文件後出現的東西。
本人也剛剛開始嘗試做android app的開發,聽說android studio是Google支持的android 應用開發工具,所以想應該肯定比Eclipse好用吧,反正以前沒有java開發經驗,索性就從android studio開始學,以前一直是做.net的開發,最近使用了Eclipse,Android Studio之後發現Visual studio.net正式太好用了,不得不說微軟的開發工具做的比誰都好。下面是我在使用Android Studio應用第三類庫剛開始的時候走了不少彎路,所以寫下來給和我一樣的初學者,分享一下
新建好了Android項目,添加一個第三方已經打包好的jar文件進你項目,下面就已添加一個odata4j的一個包
在項目中添加一個libs文件
直接通過COPY/PAST 把你下載的jar文件添加到libs文件夾下
然後在libs文件夾和添加的*.jar文件下鼠標單擊菜單 add as library
然後在選擇項目單擊Open Module Settings,在Dependencies中選擇添加文件
這樣就完成了jar文件添加
打開App目錄下有個build.gradle文件應該項目結構文件,上述的動作只是為了在在文件下添加
dependencies {
compile files('libs/android-support-v13.jar')
compile files('libs/odata4j-0.7.0-clientbundle.jar')
}
下面演示如何在本項目中導入第三方的源代碼類庫,這裡例子是導入Httpzoid一個json http client類庫
先從github上下載zip包解壓後把Httpzoid目錄copy到你項目的目錄下
添加後android studio的項目下會自動出現這個目錄
接下來需要手工修改項目跟目錄下settings.gadle 添加
include ':App',':Httpzoid'
這裡必須手工修改沒有其他方法
然後在打開App/build.gradle這個文件,添加
dependencies{
compile project(':Httpzoid')
}
這是你在打開Open Module Settings就可以看到,已經導入httpzoid的類庫
但是編譯肯定還是會錯誤的
還必須在項目Httpzoid目錄下添加一個build.gradle的這個文件,內容如下
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile files('libs/gson-2.2.4.jar')
}
這是後編譯還會有可能報錯
這時候可能需要修改一下Httpzoid目錄下的AndroidManifest.xml文件有可能存在和你項目中文件有沖突或版本跨度太大導致語法的錯誤修改一下
做完以上幾步基本上就可以便宜成功了
在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 文件中配置依賴來解決,比如:
vcq9yOfPwjwvc3Ryb25nPqO6PC9wPg0KPHVsPg0KPGxpPjxjb2RlPmNvbXBpbGUgZmlsZVRyZWUoZGlyOiAmIzM5O3h4eCYjMzk7LCBpbmNsdWRlOiBbJiMzOTsqLmphciYjMzk7LCAmcXVvdDsqLnh4eCZxdW90O10pPC9jb2RlPqO6vavEs7j2xL/CvM/Cy/nT0Lf7us/AqdW5w/u1xM7EvP7X986q0sDAtaO7PC9saT4NCjxsaT48Y29kZT5jb21waWxlICYjMzk7Y29tLnh4Lnh4OlByb2plY3ROYW1lOlZlcnNpb24mIzM5O6O6xeTWwzwvY29kZT5NYXZlbmAgv+LX986q0sDAtaO71No8YSBocmVmPQ=="http://search.maven.org/" target="_blank" title="\">Maven 庫中心可以搜索自己想用的庫進行依賴;
compile project(':AnotherModule')
:配置另一個 Module 作為本 Module 的依賴,被依賴的 Module 必須被導入到當前工程中;compile files('xxx.jar')
:配置某個 jar 包作為依賴。看起來不錯,基本通用的配置都已經存在了。一般對於中等小型的工程,這種開發方式完全沒有問題。但是有時候 A 和 B 兩個工程,想同時引用另一個公共的 Module C,而這個 Module 可能是一個比較復雜的 Android Module,可能包含了一些主題、UI 、資源文件等等,這時候,如果用 Module 依賴的方式來配置,不免有些困難,因為 A 和 B 都要導入 C,而且要隨時關注 C 的更改。
好在 Android Studio 提供了aar
庫的打包方式,我們可以把 C 作為library
進行打包,輸出 aar 文件,然後在 A 和 B 中,配置 aar 庫依賴,就可以解決。
要輸出 aar 文件,必須將 Module 配置為 library,在 gradle 文件中如下:
apply plugin: 'com.android.library'
;apply plugin: 'com.android.application'
。將 Module 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar
。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在classes.jar
中。比如:
這種方式比較簡單,打開Project Structure
,添加一個新 Module,然後選擇Import *.JAR or *.AAR Package
的方式導入:
導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。
接著可以在 gradle 中配置依賴了,其他 Module 可以引用這個 Module 了,依賴方式使用compile project
的方式即可。
缺點:
被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。
gradle 其實還有另一種依賴可以引用 aar:
compile(name: 'xxx', ext: 'aar')
。
首先需要將 aar 文件放入引用 Module 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:
1 2 3 4 5repositories
flatDir {
dirs
'libs'
}
}
接著在 gradle 的依賴配置中加入compile(name: 'xxx', ext: 'aar')
這一句,依賴即可關聯完畢。構建一下工程,在 Module 的build/intermediates/exploded-aar
目錄下,可以看到有一些臨時文件生成:
看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Module 的源代碼的話,還可以Attach Source
關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。
另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
綜上,介紹了 aar 文件的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。
和活動一樣,Fragment也有生命周期。官方文檔中有詳細的文字說明,不過最好還是實踐下,熟悉過程。http://developer.Android.com/guide/
現階段,我們創建了最簡單的Android項目,現在在此公布github鏈接https://github.com/neuyu/android-best-practices,
先上效果圖: NavigationView是android-support-design包下的一個控件,在使用NavigationView時需要引入design
直接上代碼和圖片。情況一:[html]復制代碼 代碼如下:<?xml version=1.0 encoding=utf-8?> <LinearLayou