【问题标题】:Android library project as jar file for distribution, like google analyticsAndroid 库项目作为 jar 文件进行分发,如谷歌分析
【发布时间】:2012-05-31 05:41:51
【问题描述】:

我已经看到this 的问题,并且对创建一个我可以分发并可以在任何安卓应用程序中使用的 jar 文件有一些疑问。

我的要求是什么

  1. 正如我所说,我想构建和分发一个封闭源代码库。一世 不希望源代码可见。
  2. 在那个库中,我不想使用任何资产、布局、资源 等等,但我想使用一些 android 特定的代码,比如getting android device id.

上面链接的 SO 问题中最流行的答案告诉 创建一个常规 java 项目并在其中导入 android.jar。 我尝试这样做,但我不知道如何添加android.jar 到任何 java 项目。我也想澄清一下。

此外,我想知道是否有任何其他方法使用 android sdk 本身(不使用 java 项目)创建一个闭源库 jar 文件。

我认为我想要的都是可能的,因为google analytics for android native apps 似乎已经做到了。我确信在他们分发的 .jar 文件中,他们使用的是 android 特定代码,因为他们似乎没有其他方法可以让设备信息显示在分析查看器中。

编辑:有人可以澄清一下吗??

我想我已经取得了一些进展。这就是我所做的

  • 创建了一个常规的 android 项目(不是库项目,“是 图书馆”复选标记未选中)

  • 在项目中,我已经编写了我的逻辑。它使用了一些安卓 特定类,如SharedPreferenceUUIDPackageManager。但 与资产无关,布局也没有类扩展 Activity。只是一个扩展 java.lang.object

  • 的 java 类
  • 使用 Project->rightclick->export->Java->JAR 导出项目 文件。在下一个屏幕中,我取消选中附近的复选框 AndroidManifest.xml。设置要导出的目标目录和 在保持默认设置的情况下单击了三次。然后我点击 完成,在我的桌面上获得了一个可爱的 libMyLibraryName.jar

然后我创建了另一个 android 项目,使用 project->rightclick->properties->java build path -> libraries->add external jar 将此 libMyLibraryName.jar 添加到新项目中。

我尝试在我的新项目中使用我在库中的类

MyLibraryClass objClass = new MyLibraryClass(this);

并且我能够成功编译和运行。我什至将库发送给我的一位同事,他能够在他的机器上使用该库(只需确保我的工作区中的库项目不会影响使用它的项目)。

现在我有 2 个问题。

1) 我的第一个问题是,下面给出的文档中“真正的库”一词是什么意思? 是否有任何非 android java 项目可以导出到 JAR 文件?

但是,库项目不同于标准的 Android 应用程序项目,因为您无法将其直接编译为自己的 .apk 并在 Android 设备上运行它。 同样,您不能导出 库项目到一个独立的 JAR 文件,就像你会做的那样 真正的图书馆。相反,您必须间接编译库, 通过引用依赖应用程序中的库并构建 该应用程序。

这部分取自标题“图书馆项目”下的documentation

2) 我的第二个问题是,我创建 JAR 文件的方式有什么问题吗? 有什么可能会在以后让我反悔的陷阱吗?在我的重要项目中使用它之前,我想确保我没有做一些非常错误的事情。

我可能补充一下,我没有尝试创建JAVA项目并导入android.jar的方法。如果我目前所做的有误,我准备试试那个。

【问题讨论】:

    标签: android jar


    【解决方案1】:

    android.jar 将位于您安装 Android SDK 的位置。在platforms 目录下应该有许多名为android-<version> 的其他目录。 android.jar 将在那里。选择特定于您所针对的最低 android 版本的版本。

    完成后,将其复制到您的项目中。如果您使用的是 eclipse,我认为您可以直接将 jar 剪切并粘贴到您的项目中,右键单击并将其添加到构建路径。如果您不使用 eclipse 或任何其他 IDE,您只需要在构建 jar 文件时确保 android.jar 在类路径中。

    之后,您可以将新建的 android 库拖放到任何 Android 项目中。

    回答您的其他问题:

    1. 真正的库是指 jar 文件,而不是 Android 库项目。

    2. 我认为您创建 jar 文件的方式没有任何问题。正如我上面提到的,我会使用android.jar 来实现它,但你的方式也应该有效。为了验证这一点,我将检查 jar 内容并确保您拥有的所有内容都是 .class 文件。

    【讨论】:

    • 最后,我做了一个java项目,添加了android.jar,编写了我的逻辑并导出了JAR文件。我可以毫无问题地使用那个库。谢谢非常感谢您的帮助..
    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多