大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Android Gradle 引用本地 AAR 的几种方式相关的知识,希望能为你提供帮助。
方式4:
1. 把 AAR 放入 libs
2.
方式3:
1. 把 AAR 放入 libs
2. 在 build.gradle 添加 repositories{flatDir{dirs ‘libs‘}}
3. 在 build.gradle 添加 dependencies{compile ‘包名:类库名:版本号@aar‘}
优点√ :
缺点× :
- 自己类库可以自己维护自己内部的AAR引用.
- 能像维护libs里的jar类库一样简单.
- dependencies 设置方式和在线解析引用的方式一样.
如何设置正确的本地AAR名称?
- 同方式2的缺点
- dependencies 设置时需要放在 compile fileTree 的上面,否则无法识别.
- dependencies 设置的名字 和 在线解析引用的方式不一样.如
在线解析方式:compile ‘com.android.support:support-v4:[email protected]‘
本地AAR方式:compile ‘android.support:v4:[email protected]‘
方式2:
- 解压AAR包,看AndroidManifest.xml里的 package="android.support.v4"
- 对应的就是名称就是 android.support:v4
- 然后必须设置AAR文件名为:v4-1.0.0.aar
- 最后拼接正确的版本号就是 android.support:v4:1.0.0
1. 把 AAR 放入 libs
2. 在 build.gradle 添加 repositories{flatDir{dirs ‘libs‘}}
3. 在 build.gradle 添加 dependencies{compile(name:‘nameOfYourAARFile‘, ext:‘aar‘)}
优点√ :
缺点× :
- 自己类库可以自己维护自己内部的AAR引用.
- 能像维护libs里的jar类库一样简单.
此问题可通过以下方法不太完美的解决掉:
- 在类库(library)中引用AAR库,在别的类库(library)或项目(application)中引用该类库时无法解析识别其引用的AAR库.
1.复制一份引用的AAR库文件到类库、项目的libs中,同时设置 flatDir.方式1:
(意味着有多少地方引用该类库,就要复制多少份AAR,都要设置 flatDir)
2.在所有引用该类库的 build.gradle 中 设置 flatDir 为以下代码即可.
(意味着有所有引用该类库的地方的 build.gradle,都要设置一遍 flatDir)
repositories {
flatDir {
dirs ‘libs‘, project(‘:类库名‘).file(‘libs‘)
}
}
1. File ->
New Module ->
Import .JAR/.AAR
2. import the .AAR.
3. 在 build.gradle 添加 dependencies{compile project(‘:Name-Of-Your-Module-aar‘)}
优点√ :
缺点× :
- 可以像引用自己类库一样.
- 可以供多个库、项目引用此AAR类库.
参考资料:
- 需要像自己类库一样去维护.
- How to manually include external aar package using new Gradle Android Build System - Stack Overflow
【Android Gradle 引用本地 AAR 的几种方式】Handling transitive dependencies for local artifacts (jars and aar)!-- .wiz-todo,>!-- html,>!-- html,>!--mark>
If you have a local jar or aar library that you want to use in more than one project, you cannot just reference it directly as a local dependency. This is because the android plugin will complain if it finds the same jar file twice when dexing the project and all its dependencies. (Note that right now you can‘t actually use a local aar file even if you only reference it once).
One way to fix this is to deploy the artifact in a repository. While it‘s possible, it might not be convenient due to the overhead of managing such a repository.
Another option is to create a new Gradle sub-project, and to make this project‘s published artifact be the jar or aar file that you want to reuse. Then you can simply have other Gradle sub-projects depend on this new sub-project.
In this new sub-project, simply create a build.gradle with the following:
configurations.create("default") artifacts.add("default", file(‘somelib.jar‘))
推荐阅读
- Android 自定义View之自绘控件
- Android实例-实现扫描二维码并生成二维码(XE8+小米5)
- Android Service的绑定过程
- Android网络编程之使用HttpClient和MultipartEntityBuilder 批量同时上传文件和文字
- AndroidStudio利用android-support-multidex解决65536问题64k问题
- java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor
- AndroidManifest.xml中的注册组件
- React Native DEMO for Android
- Android之聊天室设计与开发