1. 程式人生 > >jar與aar的區別及使用方法

jar與aar的區別及使用方法

  • libname.jar: A Java archive.
  • libname-src.jar: An archive containing the sources ("source jar").
  • name.aar: An android 'aar' bundle containing the java archive and resources of this target. It does not contain the transitive closure.

 

使用Android Studio對工程進行編譯後,會同時生成jar與aar檔案。

其位置分別位於:

jar: /build/intermediates/bundles/debug(release)/classes.jar
aar: /build/outputs/aar/libraryname.aar

兩者的區別:

jar 中只包含了class檔案與清單檔案。
aar中除了包含jar中的class檔案還包含工程中使用的所有資源,class及res資原始檔全部包含。
如果只是一個簡單的類庫那麼使用生成的*.jar檔案即可;如果你的是一個UI庫,包含一些自己寫的控制元件佈局檔案以及字型等資原始檔那麼就只能使用*.aar檔案。

使用方式:

jar 拷貝到 libs 目錄,並在gradle檔案中新增

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

aar 有兩種方式:
1.本地使用
拷貝到 libs目錄,並在gradle檔案中新增

repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    compile(name:'genius', ext:'aar')
}

2.網路載入
將aar釋出到mavenCentral倉庫,在gradle檔案中新增

repositories {
    maven {
        url "http://maven.dev.sh.ctripcorp.com:8081/nexus/content/groups/public"
    }
}
dependencies {
    classpath 'net.sf.proguard:proguard-gradle:5.2.1'
}

多層Module依賴本地AAR

Android Studio多層Module依賴本地AAR,在編譯的時候出發生錯誤,找不到AAR(ModuleA libs中有c.aar,ModuleB依賴ModuleA)
此時需要在ModuleB的build.gradle中新增

repositories {
    flatDir {
        dirs '../ModuleA/libs','libs'
    }
}

同時在dependencies中新增aar名稱:

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



作者:Andorras
連結:https://www.jianshu.com/p/99a7bae4193f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。