我已经看到了这个问题,并且对创建一个我可以分发并可以在任何 android 应用程序中使用的 jar 文件有一些疑问。
我的要求是什么
- 正如我所说,我想构建和分发一个封闭源代码库。我不希望源代码可见。
- 在那个库中,我不想使用任何资产、布局、资源等。但我想使用一些 android 特定代码,例如获取 android 设备 ID。
上面链接的 SO 问题中最流行的答案是创建一个常规的 java 项目并在其中导入 android.jar。我试图这样做,但我不知道如何将 android.jar 添加到任何 java 项目中。我也想澄清一下。
此外,我想知道是否有任何其他方法使用 android sdk 本身(不使用 java 项目)创建一个封闭源库 jar 文件。
我认为我想要的是可能的,因为android 原生应用程序的谷歌分析似乎已经做到了。我确信在他们分发的 .jar 文件中,他们使用的是 android 特定代码,因为他们似乎没有其他方法可以让设备信息显示在分析查看器中。
编辑:有人可以澄清一下吗?
我想我已经取得了一些进展。这就是我所做的
创建了一个常规的android项目(不是库项目,“是库”复选标记未选中)
在项目中,我已经编写了我的逻辑。它使用一些 android 特定的类,如
SharedPreference
,UUID
,PackageManager
. 但与资产无关,布局也没有类扩展Activity
。只是一个扩展的java类java.lang.object
- 使用Project->rightclick->export->Java->JAR file导出项目。在下一个屏幕中,我取消选中 附近的复选框
AndroidManifest.xml
。设置要导出的目标目录,然后在保持默认设置的情况下单击三次。然后我点击完成,在我的桌面上得到了一个可爱的libMyLibraryName.jar 。
然后我创建了另一个android项目,使用项目->右键单击->属性->java构建路径->库->添加外部jar将libMyLibraryName.jar
其添加到新项目中。
我试图在我的新项目中使用我在图书馆中的课程
MyLibraryClass objClass = new MyLibraryClass(this);
我能够成功编译并运行。我什至将库发送给我的一位同事,他能够在他的机器上使用该库(只需确保我的工作区中的库项目不会影响使用它的项目)。
现在我有2个问题。
1)我的第一个问题是,下面给出的文档中“真正的库”一词是什么意思?是否有任何可以导出到 JAR 文件的非 android java 项目?
但是,库项目与标准 Android 应用程序项目的不同之处在于,您不能将其直接编译为自己的 .apk 并在 Android 设备上运行。类似地,您不能将库项目导出为独立的 JAR 文件,就像对真正的库所做的那样。相反,您必须通过在依赖应用程序中引用库并构建该应用程序来间接编译库。
好吧,这部分取自标题为“图书馆项目”的文档。
2) 我的第二个问题是,我创建 JAR 文件的方式有什么问题吗?任何可能的陷阱可能会在以后咬我?在我的重要项目中使用它之前,我想确保我没有做一些非常错误的事情。
我可能会补充一点,我没有尝试创建 JAVA 项目并导入android.jar
. 如果我目前所做的事情是错误的,我准备尝试那个。