【发布时间】:2012-05-31 05:41:51
【问题描述】:
我已经看到this 的问题,并且对创建一个我可以分发并可以在任何安卓应用程序中使用的 jar 文件有一些疑问。
我的要求是什么
- 正如我所说,我想构建和分发一个封闭源代码库。一世 不希望源代码可见。
- 在那个库中,我不想使用任何资产、布局、资源 等等,但我想使用一些 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 项目(不是库项目,“是 图书馆”复选标记未选中)
在项目中,我已经编写了我的逻辑。它使用了一些安卓 特定类,如
SharedPreference、UUID、PackageManager。但 与资产无关,布局也没有类扩展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的方法。如果我目前所做的有误,我准备试试那个。
【问题讨论】: