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