如何在其他应用程序中使用我的自定义库apk文件

我有我自己的自定义库apk文件(比如说lib.apk)我想让它可用于其他应用程序。 如何在其他应用程序的android manifest.xml文件中提供uses-library,以便使用我的自定义库。

Solutions Collecting From Web of "如何在其他应用程序中使用我的自定义库apk文件"

<uses-library>元素是作为固件扩展提供的附件。 AFAIK,它不会用于你的情况。

很可能,您将需要实现通过AIDL公开API的服务,或者使用一组logging的Intent操作与其他应用程序交换数据,或者公开ContentProvider

否则,将您的代码打包为JAR,而不是APK。 你可以在我的github仓库中看到很多这样的例子(所有的cwac都遵循这个模式)。

从jar库转换到apk库时,请确保从“Java Build Path” – >“Projects”中删除对jar的引用,并将库添加到“Android” – >“Library”中。

我尝试在eclipse中使用jar库(我在项目的Java Build Path选项中添加了一个外部jar库)。 应用程序编译,但我有一个“无法find类…”exception在运行时。

您实际上可以制作一个链接到另一个项目的项目。

在Eclipse中你必须做两件事:

  • 在manifest.xml中添加uses-library =包名
  • 打开项目属性 – > Java Build Path – >项目并添加使用库的项目

但是我还没有设法让它运行。 SDK正确地上传这两个软件包,但我得到一个链接错误

 WARN/dalvikvm(444): Link of class 'Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;' failed ERROR/dalvikvm(444): Could not find class 'me.guillaumin.android.osmtracker.activity.DisplayTrackMap', referenced from method me.guillaumin.android.osmtracker.activity.TrackLogger.onOptionsItemSelected WARN/dalvikvm(444): VFY: unable to resolve const-class 154 (Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;) in Lme/guillaumin/android/osmtracker/activity/TrackLogger; 

虚拟机无法加载我的应用程序链接到库应用程序的类。

lib.apk“应用程序”应该使用AndroidManifest.xml文件中的Intent-Filters发布intents。

需要使用lib.apk中的活动的活动,只需要启动一个像下面这样的意图:

  Intent i = new Intent(); i.setClass(this, libAPKActivity.class);