2009-09-07 28 views
8

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

+0

为什么你需要一个APK的呢?只需滚动一个JAR就可以了。 – Matthias 2009-09-07 15:35:11

+0

我有同样的问题。我有一个模块化的软件,可以作为多种活动使用,我不想在所有模块中重复使用接口和通用代码。如果我选择使用jar库,情况就是这样。 – Spidey 2010-07-29 19:47:59

+4

很难将资源包含在lib.apk处理的jar文件中。 – phreed 2010-12-28 16:55:46

回答

7

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

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

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

0

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

0

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

你必须做两件事情在Eclipse:

  • 添加使用库=在manifest.xml包名
  • 开放项目属性 - > Java构建路径 - >项目和新增项目使用的库

但我还没有设法让它运行。该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; 

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

-1

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

需要使用lib.apk内的活动的活动,只需要开始像下面的意图:

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

当从一个罐子库转换为与APK库确保引用将该jar从“Java Build Path” - >“Projects”中移除,并将该库添加到“Android” - >“Library”中。

+2

谢谢,这适用于我的情况,其中应用程序链接到我的自定义库,但是当在设备上安装APK时,我收到警告,说找不到库“APK”。从Java Build Path中移除它,但将它作为库参考解决。 – fejd 2011-06-08 07:45:52

+1

@fejd正如我所描述的[这里](http://stackoverflow.com/a/20320105/2930186) – ripopenid 2013-12-04 03:15:43

相关问题