Java 创建用于分发的Android Jar库
我知道Android库项目,它允许您创建一个共享源代码项目,可以根据需要拉入Android应用程序。然而,这要求该来源是可用的 我正在寻找一种构建和分发封闭源代码库的方法,该库可以用于其他Android项目,比如传统的JAR。这需要使用Android编译器,所以它不是一个普通的JavaJAR文件。FWIW,我不需要在JAR中嵌入资源/布局 我已经看过了,但感觉像是一种变通方法,我更愿意使用谷歌“官方支持”的东西。此外,我需要确保我构建的JAR与旧/新版本的androidsdk兼容(即,我需要一种设置目标平台版本的方法,等等)Java 创建用于分发的Android Jar库,java,android,jar,Java,Android,Jar,我知道Android库项目,它允许您创建一个共享源代码项目,可以根据需要拉入Android应用程序。然而,这要求该来源是可用的 我正在寻找一种构建和分发封闭源代码库的方法,该库可以用于其他Android项目,比如传统的JAR。这需要使用Android编译器,所以它不是一个普通的JavaJAR文件。FWIW,我不需要在JAR中嵌入资源/布局 我已经看过了,但感觉像是一种变通方法,我更愿意使用谷歌“官方支持”的东西。此外,我需要确保我构建的JAR与旧/新版本的androidsdk兼容(即,我需要一种
最新的Android工具集是否允许创建/使用JAR二进制文件?你能指出一些关于我如何做到这一点的文档吗?谷歌“官方支持”的唯一解决方案是Library项目,它需要分发源代码。您可以以正常方式创建JAR,但不能在其中包含或引用资源
不幸的是,我认为也不可能在库项目中包含打包的JAR,作为绕过源代码要求的方法。ADT创建一个bin文件夹,其中包含项目中所有匹配源文件和目录的所有类文件,您可以使用JAR命令,创建一个包含这些类文件和目录的jar归档文件,并假定您的库是可用的,但当然,类文件平台级别只针对当前级别的项目构建-您需要为每个平台级别创建一个不同的jar文件;然而,最重要的是R.class文件包含在项目目录树中,因此您可以访问它的资源。我不知道这是否是android中的官方方式,但它对我很有效。在我们的项目中,我们正在创建apk(使用apkbuilder),它安装在/system/framework中,并在默认类路径中添加了这个apk。为了使用jar编译应用程序,我们创建了一个jar文件(使用JARC)
注意:我们的库中没有任何资源。Android没有提供特殊类型的Android JAR。但是您可以做的是向项目中添加build.xml并使用ant构建JAR My build.xml如下所示:
<project name="MyAndroidLib" default="dist" basedir=".">
<description>
This is my Android lib
</description>
<!-- set global properties for this build -->
<property name="src" location="src" />
<property name="bin" location="bin" />
<target name="jar">
<jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
<!-- replace 'com' by what ever you are using -->
<!-- as first part of the package name -->
<!-- e.g. de, org, ... -->
<!-- the ** is important to include the directory recursively -->
<include name="com/**" />
</jar>
</target>
</project>
这是我的Android库
通过在您的项目主文件夹中运行
antjar
来构建JAR。您可以创建一个“常规”Java项目并从那里导入Android.JAR。然后,您将可以访问SDK中的每个组件。然后,您可以将项目导出为jar。。。并从Android应用程序加载。这非常有效,而且似乎是一种非常简单的方法。如果您在没有任何资源的情况下创建Android库项目,ADT(在r16中首次发现)将创建一个与“bin”文件夹中的项目同名的.jar 只需转到要制作jar的项目的属性。单击Android选项卡。在Is库中打勾。现在,您可以在bin文件夹中看到.jar文件。请在您想使用的地方使用它。试试这个:这很有效
1) 通过取消选择IsLibrary标志,使库项目成为普通项目
2) 作为Android应用程序执行您的项目。(不会显示任何错误)
3) 您将在bin文件夹中找到一个.jar文件和.apk
4) 给你.jar谁想使用你的库
5) 告诉他们只需将外部jar导入构建路径
这在所有资源中都能正常工作。祝你好运。.jar只是一个包含.class文件的.zip文件 (您可以尝试将任何.jar文件的扩展名更改为.zip,然后查看结果)。
通过压缩.class文件,您可以轻松地为任何目的创建任何.jar库。在最新版本的Android Studio 1.2中,jar库的创建非常简单,只需点击即可 应采取的步骤:
- 转到文件->新建->新建模块
- 选择选项列表末尾的“Java库”
- 输入jar库的名称和其中的类名,然后点击finish按钮
- 就这样李>
- 转到文件->项目结构->选择“应用程序”->选择“依赖项”
- 选择底部的“+”->选择“模块依赖项”
- 选择您刚才在上面创建的jarlib模块
- 选择Ok,就这样李>
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) // Default Gradle Task, should be already present
compile 'com.android.support:appcompat-v7:21.0.3' // Default Gradle Task, should be already present
compile project(':nameOfYourJarLibraryModule') // This is your jar library module
}
谷歌正在推广Android Archive(AAR),尽管支持的JAR被带回Android studio。要了解AAR和JAR之间的区别,请参阅步骤: 1) 打开文件project.properties 2) 添加值
android.library=true
3) 保存文件
4) 从project的eclipse菜单中,选择自动构建,然后选择清除
结果:
全新的jar是在bin下创建的,“您可以用正常的方式创建一个jar,但不能在其中包含或引用资源。”我只是在Eclipse中创建一个普通的Java项目,将安卓.jar添加到构建路径,然后选择Export-Java-Jar File.@JeffGilfelt,如果在示例中包括android-13 sdk目录的android.Jar,您是否能够在项目中使用Jar库以获得更高的API级别?尝试了这个方法并能够构建Jar文件,但与将库导出到Jar时相比,该文件的大小是奇数(仅343字节)。你知道缺少什么标志吗?你可以用一个存档程序(JAR是ZIP)检查JAR的内容