我知道Android库项目,它允许您创建一个可以根据需要拉入Android应用程序的共享源项目。但是,这要求源可用。
我正在寻找一种方法来构建和分发可以在传统JAR等其他Android项目中使用的闭源库。这将需要使用Android编译器,因此它不是vanilla-Java JAR文件。 FWIW,我不需要在JAR中嵌入资源/布局。
我见过http://andparcel.com/但感觉就像是一种解决方法,我宁愿使用谷歌“正式支持”的东西。另外,我需要确保我构建的JAR与Android SDK的旧版本/新版本兼容(即我需要一种设置目标平台版本的方法等)。
最新的Android工具集是否允许创建/使用JAR二进制文件?你能指出一些关于我如何做到这一点的文件吗?
答案 0 :(得分:49)
如果你创建一个没有任何资源的Android库项目,ADT(首先在r16中注意到)将创建一个与'bin'文件夹中项目同名的.jar。
答案 1 :(得分:23)
Android不提供特殊的Android-JAR。但是你可以做的是为你的项目添加一个build.xml并用ant。
构建JAR我的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>
通过在项目主文件夹中运行ant jar
来构建JAR。
答案 2 :(得分:17)
您可以创建一个“常规”Java项目并从那里导入Android.jar。然后,您将可以访问SDK中的每个组件。然后,您可以将项目导出为jar ...并从Android应用程序加载它。这很有效,它似乎是一种直截了当的方式。
答案 3 :(得分:15)
只需转到要制作jar的项目的属性。单击Android选项卡。并在Is库中打勾。现在您可以在bin文件夹中看到.jar文件。请将其用于您要使用的位置。
答案 4 :(得分:10)
Google正式支持的唯一解决方案是图书馆项目,它需要分发源代码。您可以以正常方式创建JAR,但不能在其中包含或引用资源。
不幸的是,我认为也不可能在库项目中包含打包的JAR,作为解决源代码要求的手段。
答案 5 :(得分:8)
在Android Studio 1.2的最新版本中,JAR库的创建就像点击一样简单。
要遵循的步骤:
下一步是在您的应用中添加Jar Library作为依赖项。 就这么简单
....或者您可以将以下行添加到您的App gradle文件
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工作室。要找出AAR和JAR之间的区别,请参考this link
答案 6 :(得分:6)
试试这个:这可行
1)通过取消选择IsLibrary标志,使您的图书馆项目成为正常项目。
2)将您的项目作为Android应用程序执行。 (它不会显示任何错误)
3)你会在bin文件夹中找到一个.jar文件以及.apk。
4)给你想要使用你的图书馆的.jar。
5)告诉他们只需将外部jar导入构建路径。
这将适用于所有资源。祝你好运。
答案 7 :(得分:1)
ADT创建一个bin文件夹,其中包含项目中所有匹配的源文件和目录的所有类文件,您可以使用jar命令,创建包含这些类文件和目录的jar存档,并推测您的库,但是当然,类文件平台级别只针对项目构建的当前级别 - 您需要为每个平台级别使用不同的jar文件;但是,最重要的是R.class文件包含在项目目录树中,因此您可以访问其资源。我不知道这是否是在android中做事的官方方式,但它对我有用。
答案 8 :(得分:0)
在我们的项目中,我们正在创建apk(使用apkbuilder),它安装在/ system / framework中,并在默认的classpath中添加了这个apk。为了使用jar编译应用程序,我们正在创建一个jar文件(使用jar c)。
注意:我们库中没有任何资源。
答案 9 :(得分:0)
.jar只是一个包含.class文件的.zip文件 (您可以尝试将任何.jar文件的扩展名更改为.zip,然后查看结果)。 通过压缩.class文件,您可以轻松地为任何目的创建任何.jar库。
答案 10 :(得分:0)
打开文件project.properties 输入价值 android.library =真
保存文件, 来自eclipse菜单的项目, 选择自动构建&#39; 然后选择&#39; clean&#39; 全新的jar是在bin下创建的