2012-04-20 77 views
0

我試圖將一箇舊應用程序用作新應用程序的庫項目。但是,當它們同時安裝在設備上時,存在一些問題,發佈後我不確定它們是否存在。Android:將一箇舊應用程序用作庫項目

比方說,我的老應用程序是一個新的應用程序是B.

如果我只安裝A,A工程確定。

然後,當我安裝B,它使用A作爲庫項目(在將項目A標記爲「isLibrary」之後),原始A停止在設備上工作,但B工作正常。

但是,如果我先安裝B,然後A,兩者都可以正常工作。

看來,當A被包含爲另一個應用程序的「庫項目」,並且安裝在原始「A」之後時,原來的「A」會以某種方式失效! (但問題不存在相反方向)

這個問題會在發佈後消失嗎?還是我必須爲A和B創建一個庫項目C,這將防止這種情況發生?還是這個問題在所描述的情況下根本就不存在(這意味着我完全在做其他錯誤)?

爲什麼我沒有創建一個庫項目C的原因是因爲所有的重構都涉及到,而Eclipse在我的情況下並沒有很好地重命名所有的東西。

回答

1

查看官方開發指南Managing Projects - Library Project

然而,庫項目從在一個標準的Android應用程序項目不同,你不能直接編譯到它自己的apk和Android設備上運行。同樣,不能像導出真正的庫一樣將庫項目導出爲獨立的JAR文件。相反,您必須通過引用相關應用程序中的庫並構建該應用程序來間接編譯庫。


回到你的問題:

如果我只安裝A,A工程確定。

因爲A是一個應用程序項目(isLibrary設置未勾選),所以A.apk被編譯,安裝和工作。

然後當我安裝B,它使用A作爲庫項目(在將項目A標記爲「isLibrary」之後),原始A停止在設備上工作,但B工作正常。

A現在更改爲庫項目(isLibrary設置勾選),此時沒有A.apk,只有B.apk(編譯和合並時編譯B.apk)編譯,安裝和工作。

但是,如果我先安裝B,然後A,兩者都可以正常工作。

如果A是一個庫項目,IDE之類的IDE不允許您直接編譯,安裝並在仿真器或實際設備上運行它。我想你把A改回應用程序項目(isLibrary設置未勾選),那麼A.apk就會被再次編譯,安裝並工作。

看來,當A被包含爲另一個應用程序的「庫項目」,並且安裝在原始的「A」之後,那麼原始的「A」會以某種方式失效! (但問題不存在反過來)

基本上是正確的,檢查官方開發指南的詳細信息。

此問題在發佈後會消失嗎?還是必須爲A和B創建一個庫項目C,這會阻止這種情況發生?還是這個問題在所描述的情況下根本就不存在(這意味着我完全在做其他錯誤)?

不,如果要將項目A和B同時作爲應用程序項目(以便可以在仿真器或實際設備上編譯,安裝和運行它們),則需要庫項目C.

相關問題