创建一个Android Jar库以供分发

时间:2011-02-16 08:28:43

标签: java android jar

我知道Android库项目,它允许您创建一个可以根据需要拉入Android应用程序的共享源项目。但是,这要求源可用。

我正在寻找一种方法来构建和分发可以在传统JAR等其他Android项目中使用的闭源库。这将需要使用Android编译器,因此它不是vanilla-Java JAR文件。 FWIW,我不需要在JAR中嵌入资源/布局。

我见过http://andparcel.com/但感觉就像是一种解决方法,我宁愿使用谷歌“正式支持”的东西。另外,我需要确保我构建的JAR与Android SDK的旧版本/新版本兼容(即我需要一种设置目标平台版本的方法等)。

最新的Android工具集是否允许创建/使用JAR二进制文件?你能指出一些关于我如何做到这一点的文件吗?

11 个答案:

答案 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库的创建就像点击一样简单。

要遵循的步骤:

  • 转到文件 - &gt;新 - &gt;新模块 enter image description here
  • 选择&#34; Java Library&#34;在选项列表的末尾 enter image description here
  • 输入jar lib的名称及其中的类名称,然后单击“完成”按钮 enter image description here
  • 多数民众赞成!

下一步是在您的应用中添加Jar Library作为依赖项。 就这么简单

  • 转到文件 - &gt;项目结构 - &gt;选择&#39; app&#39; - &GT;选择&#39;依赖&#39;
  • 选择&#39; +&#39;在底部 - &gt;选择&#39;模块依赖&#39; enter image description here
  • 选择您刚才创建的jar lib模块 enter image description here enter image description here
  • 选择确定,就是这样!

....或者您可以将以下行添加到您的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下创建的