【问题标题】:Android: Using an old app as a library projectAndroid:将旧应用程序用作库项目
【发布时间】:2012-04-20 17:11:19
【问题描述】:

我正在尝试将旧应用用作新应用的库项目。但是,当它们同时安装在设备上时会出现一些问题,我不确定发布后是否存在。

假设我的旧应用是 A,新应用是 B。

如果我只安装 A,A 就可以了。

然后当我安装 B 时,它使用 A 作为库项目(在将项目 A 勾选为“isLibrary”之后),原来的 A 停止在设备上工作,但 B 工作正常。

但是,如果我先安装 B,然后安装 A,都可以正常工作。

似乎当A作为“库项目”包含到另一个应用程序中,并在原来的“A”之后安装时,原来的“A”不知何故失效了!!! (但反过来问题就不存在了)

发布后这个问题会消失吗,还是我必须为 A 和 B 创建一个库项目 C,这样才能防止这种情况发生?还是在所描述的情况下根本不存在这个问题(意味着我完全做错了其他事情)?

我没有创建库项目 C 的原因是因为涉及到所有重构,而在我的案例中,Eclipse 在重命名所有内容方面做得并不好。

【问题讨论】:

    标签: android shared-libraries shared android-library


    【解决方案1】:

    查看官方开发指南Managing Projects - Library Project

    但是,库项目与标准 Android 应用程序项目的不同之处在于,您无法将其直接编译为自己的 .apk 并在 Android 设备上运行。同样,您不能将库项目导出到自包含的 JAR 文件,就像对真正的库所做的那样。相反,您必须通过在依赖应用程序中引用库并构建该应用程序来间接编译库。


    回到你的问题:

    如果我只安装 A,A 就可以了。

    因为 A 是一个应用程序项目(isLibrary 设置未勾选),所以 A.apk 已编译、安装和工作。

    然后当我安装 B 时,它使用 A 作为库项目(在将项目 A 勾选为“isLibrary”之后),原来的 A 停止在设备上工作,但 B 工作正常。

    A 现在更改为 Library Project(isLibrary 设置勾选),此时不再有 A.apk,只有 B.apk(与 A 编译并在构建 B.apk 时合并)被编译、安装和工作。

    但是,如果我先安装 B,然后安装 A,都可以正常工作。

    如果 A 是库项目,Eclipse 之类的 IDE 不允许您直接在 Emulator 或真机上编译、安装和运行它。我想你把 A 改回应用程序项目(isLibrary 设置未勾选),所以 A.apk 再次被编译、安装和工作。

    似乎当A作为“库项目”包含到另一个应用程序中,并在原来的“A”之后安装时,原来的“A”不知何故失效了!!! (但反过来问题就不存在了)

    基本正确,详细信息请查看官方开发指南。

    发布后这个问题会消失吗,还是我必须为 A 和 B 创建一个库项目 C,这样才能防止这种情况发生?还是在所描述的情况下根本不存在这个问题(意味着我完全做错了其他事情)?

    不是也可以,如果你想将项目 A 和 B 都作为应用程序项目,你需要库项目 C(这样你就可以在模拟器或真实设备上编译、安装和运行它们)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-29
      • 2014-12-28
      • 1970-01-01
      • 2016-12-26
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多