【问题标题】:How to use my custom library apk file in other applications如何在其他应用程序中使用我的自定义库 apk 文件
【发布时间】:2009-09-07 13:29:45
【问题描述】:

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

【问题讨论】:

  • 为什么需要一个 APK?只需滚动一个 JAR 就可以了。
  • 我也有同样的问题。我有一个模块化软件,可以作为多个活动工作,我不想在所有模块中重复接口和公共代码。如果我选择使用 jar lib,就会出现这种情况。
  • 很难将资源包含在 lib.apk 处理的 jar 文件中。

标签: android


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢,这适用于我的应用程序链接到我的自定义库的情况,但是在设备上安装 APK 时,我收到一条警告,提示找不到库“APK”。从 Java 构建路径中删除它但将其保留为库参考解决了它。
    • @fejd 正是我所描述的here
    【解决方案3】:

    我尝试在 Eclipse 中使用 jar 库(我在项目的 Java Build Path 选项中添加了一个外部 jar 库)。应用程序可以编译,但运行时出现“找不到类...”异常。

    【讨论】:

      【解决方案4】:

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

      你必须在 Eclipse 中做两件事:

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

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

      VM 无法在我的应用中加载链接到 libs 应用的类。

      【讨论】:

        【解决方案5】:

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

        需要使用 lib.apk 中的活动的活动,只需要启动如下意图:

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

        【讨论】:

          猜你喜欢
          • 2021-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 2023-01-17
          • 1970-01-01
          • 2021-01-03
          相关资源
          最近更新 更多