Android:使用旧应用程序作为库项目

时间:2012-04-20 17:11:20

标签: android shared-libraries shared android-library

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

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

如果我只安装A,A可以正常工作。

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

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

似乎当A作为“库项目”包含在另一个应用程序中,并且安装在原始“A”之后,原来的“A”在某种程度上无效! (但问题不存在其他方式)

发布后这个问题是否会消失,还是我必须为A和B创建一个库项目C,这会阻止这个?或者这个问题在所描述的情况下根本不存在(意味着我完全做了别的错误)?

我没有创建库项目C的原因是因为所涉及的所有重构,并且Eclipse在我的案例中没有很好地重新命名所有内容。

1 个答案:

答案 0 :(得分:1)

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

  

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


回到你的问题:

  

如果我只安装A,A可以正常工作。

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

  

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

现在更改为库项目(isLibrary设置已勾选),此时不再有A.apk,只编译,安装和工作B.apk(在编译和编译时合并B.apk)。

  

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

如果A是库项目,那么像Eclipse这样的IDE不允许您直接在Emulator或真实设备上编译,安装和运行它。我想您将A更改回应用程序项目(isLibrary设置未勾选),然后再次编译,安装和工作A.apk。

  

似乎当A作为“库项目”包含在另一个应用程序中,并且安装在原始“A”之后,原来的“A”在某种程度上无效! (但问题不存在其他方式)

基本上是正确的,请查看官方开发指南以获取详细信息。

  

发布后这个问题是否会消失,还是我必须为A和B创建一个库项目C,这会阻止这个?或者这个问题在所描述的情况下根本不存在(意味着我完全做了别的错误)?

否和是,如果要将项目A和B都作为应用程序项目(以便可以在模拟器或真实设备上编译,安装和运行它们),则需要库项目C.