Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [Android Studio] *.jar 與 *.aar 的生成與*.aar,jar,第三方庫項目導入項目方法

[Android Studio] *.jar 與 *.aar 的生成與*.aar,jar,第三方庫項目導入項目方法

編輯:關於Android編程

主要講解Android Studio中生成aar文件以及本地方式使用aar文件的方法。

在Android Studio中對一個自己庫進行生成操作時將會同時生成*.jar與*.aar文件。

分別存儲位置:

*.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  
  1. dependencies{
  2. compilefileTree(include:['*.jar'],dir:'libs')
  3. } 重新編譯一次項目既可完成加載。

[java]view plaincopy
  1. repositories{
  2. flatDir{
  3. dirs'libs'
  4. }
  5. }
  6. dependencies{
  7. compile(name:'genius',ext:'aar')
  8. }

分別添加了”repositories“與更改了”dependencies“,然後重新編譯一次項目就可以正常使用了。

這時打開你的項目地址”\build\intermediates\exploded-aar\“你會發現下面多了一個文件夾”genius“打開後能看見裡邊包含了一個”classes.jar“文件與一些資源文件和”R.txt“文件。

\

這就是AndroidStudio自動解析了aar文件後出現的東西。

 

Android Studio導入第三方類庫的方法

本人也剛剛開始嘗試做android app的開發,聽說android studio是Google支持的android 應用開發工具,所以想應該肯定比Eclipse好用吧,反正以前沒有java開發經驗,索性就從android studio開始學,以前一直是做.net的開發,最近使用了Eclipse,Android Studio之後發現Visual studio.net正式太好用了,不得不說微軟的開發工具做的比誰都好。下面是我在使用Android Studio應用第三類庫剛開始的時候走了不少彎路,所以寫下來給和我一樣的初學者,分享一下

導入*.jar包

新建好了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')

}

 

導入第三方java類庫含源代碼包

下面演示如何在本項目中導入第三方的源代碼類庫,這裡例子是導入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文件有可能存在和你項目中文件有沖突或版本跨度太大導致語法的錯誤修改一下

 

做完以上幾步基本上就可以便宜成功了

 

 

1、 簡述

 

在比較大的 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 庫依賴,就可以解決。

    2、aar 文件簡介

    要輸出 aar 文件,必須將 Module 配置為 library,在 gradle 文件中如下:

    • 輸出 aar :apply plugin: 'com.android.library'
    • 輸出 apk :apply plugin: 'com.android.application'

    將 Module 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在classes.jar中。比如:

    aar 文件目錄結構

    3、導入 aar 的方式引用

    這種方式比較簡單,打開Project Structure,添加一個新 Module,然後選擇Import *.JAR or *.AAR Package的方式導入:

    導入方式

    導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。

    導入的 aar 工程目錄

    接著可以在 gradle 中配置依賴了,其他 Module 可以引用這個 Module 了,依賴方式使用compile project的方式即可。

    缺點:被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。

    4、使用配置依賴的方式引用

    gradle 其實還有另一種依賴可以引用 aar:

    compile(name: 'xxx', ext: 'aar')

    首先需要將 aar 文件放入引用 Module 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:

    1 2 3 4 5 repositories flatDir { dirs'libs' } }

    接著在 gradle 的依賴配置中加入compile(name: 'xxx', ext: 'aar')這一句,依賴即可關聯完畢。構建一下工程,在 Module 的build/intermediates/exploded-aar目錄下,可以看到有一些臨時文件生成:

    被導入 aar 生成的臨時文件

    看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Module 的源代碼的話,還可以Attach Source關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。

    另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。

    5、總結

    綜上,介紹了 aar 文件的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。

     

    1. 上一頁:
    2. 下一頁:
    熱門文章
    閱讀排行版
    Copyright © Android教程網 All Rights Reserved