在你预备要宣布你的库的时刻,你会作何选择?今朝有两个选择:宣布 Jar, 或者宣布 Aar(Android 归档文件),如不雅你还不知道 Aar,我来做个简单介绍,Aar 是 Google 为了能让库文件包含 UI 元素而提出的一种文件格局,他可以让你不仅仅包含 Java 类,还可以存储数据和资本在琅绫擎。他在 Android 和 Android Studio 上异常有效,Ant 和 Eclipse 并不支撑这种格局。
一个不好的工作是尽管应用本地的 Aar 是可行的,有两种筹划来实现这个,但他们都很麻烦。尤其是你想用你方才生成的 Aar 来做 App 测试。所以,若何选择宣布哪种格局,最后就归结为,你是否必须要支撑 Eclipse,如不雅是,那么没灯揭捉?,只能用 Jar。
问题产生的原因就是因为 Android Gradle 插件产生的是 Aar,而不是 Jar 文件,尽管如斯,事实上 Jar 文件旧包含在 Aar 文件里,其实你只要复制出来 Jar 文件,然后重定名他就好了。下面的代码就是一个简单的 Gradle Demo 来做这件工作: 拷贝文件(平日会被定名为:’classes.jar’),然后重定名成你想要的名字。
- task generateJar(type: Copy) {
- group 'Build'
- description 'blah blah...'
- dependsOn assemble
- from 'build/intermediates/bundles/release/classes.jar'
- into 'build/libs'
- rename('classes.jar', 'awesome-library.jar')
- }
下一?问题是:我们应当宣布在哪?如不雅你筹划开源它,那么想都不消想,就用酷炫的 Bintray 。Bintray 尽管须要你预备更多的器械,但依旧用起来异常简单。仅仅须要一个源码 Jar 文件,以及一个 Javadoc 的 Jar 文件,这两个都异常轻易生成。如许一来,你根本上只要指定代码路径,就可以遍历所有的 Variant。
- // sources Jar
- task androidSourcesJar(type: Jar) {
- from android.sourceSets.main.java.srcDirs
- }
- // Javadoc Jar
- android.libraryVariants.all { variant ->
- task("javadoc${variant.name.capitalize()}", type: Javadoc) {
- description "Generates Javadoc for $variant.name."
- group 'Docs'
- source = variant.javaCompile.source
- ext.androidJar = files(plugins
- .findPlugin("com.android.library")
- .getBootClasspath())
- classpath = files(variant.javaCompile.classpath.files) +
- ext.androidJar
- exclude '**/BuildConfig.java'
- exclude '**/R.java'
推荐阅读
今朝,当Go须要和C/C++代码集成的时刻,大年夜家最先想到的肯定是CGO。毕竟是官方的解决筹划,并且简单。调用C函数的时刻,必须切换当前的┞坊为线程的主栈,这带来了两个比较严重的问题:>>>详细阅读
本文标题:为什么要开发Android库?
地址:http://www.17bianji.com/lsqh/37244.html
1/2 1