2011-08-02 38 views
0

我有一個基於C++的現有應用程序(不公開但尚未公開),我想移植到android並在我的android應用程序中使用它的服務。我使用STL並在該應用程序中提升。Android應用程序和開放源代碼庫

我的問題是,如果我想將現有代碼移植到android,我可以將它們編譯爲靜態或共享對象。

我正打算使用Android NDK進行移植本地C++代碼Android作爲一個庫,並在我的Android應用程序,它是Java

使用它,而是因爲我也用開源庫,如果我使用他們在我的android應用程序的代碼應該我釋放我的圖書館的源代碼以及?

我不明白這些許可證通常如何作爲公共應用程序發佈。我想如果我將它編譯爲共享庫,我想我應該沒問題,但是我認爲在應用上傳時會出現一些問題(或者不是)作爲靜態庫,那麼我想我需要釋放我的源對象文件?

我不是很舒服的釋放我的源,我怎麼能有效地做到這一點?我應該採用哪種路徑(共享/靜態對象),還是不要緊,因爲無論如何,應用程序只是一個安裝程序,它應該在任何移動電話中工作得很好?如果我這樣做,是否會有任何開源違規問題?

感謝

+4

我投票結束這個問題作爲題外話題,因爲它涉及許可或法律問題,而不是編程或軟件開發。 [見這裏](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964)和[here](http://meta.stackexchange.com/questions/139804/can-許可問題永遠在主題上)以獲取詳細信息,以及[幫助]瞭解更多信息。 – JasonMArcher

回答

1

你首先要學習Java ...並找出沒有STL和Boost庫。

Java生態系統擁有自己的開源庫,可以提高生產力。將它們包含在您的應用程序中就像在正確的文件夾中複製一組.jar文件並將它們添加到構建路徑中。

關於許可,大多數問題都與GPL許可的庫一起提供。 GPL許可證要求任何使用GPL組件生產的應用程序也必須使用GPL(着名的「傳染性」許可證)進行開源和許可。

無論如何,GPL很少用於圖書館,因爲這種完整的開源要求會限制它們的採用。有一個衍生的GPL許可證稱爲LGPL,它不需要你的應用程序是開源的。

雖然,圖書館通常分佈在更寬鬆的許可下,大部分時間將它們包含在您的應用程序中並不是問題。

+0

我的不好,我認爲與Android NDK,我們仍然可以將我們現有的代碼作爲aLibrary,並得到導入它在Java的主要應用程序 – devgp

+0

謝謝你,這是很好的信息許可部分。所以我想我可以編譯和鏈接增強靜態/共享到我的C++庫,這不會有問題,因爲提升許可證非常簡單。並且stl屬於LGPL。 Thnx的信息再次 – devgp

0

您是否應該更好地設置問題的格式?如果您在現有應用程序中使用開放源代碼庫,那麼當您用於爲Android構建應用程序時也適用相同的規則。

就像海報中提到的一樣,不要將C++庫與Android開發所需的Java庫混淆。只要使用Android的Android開發工具包,並且如果您正在Android世界中尋找開放源代碼庫,則有一個list here

+0

感謝您指出,我想我編輯我的帖子好一點。不,我不會混淆java和c + +的開源庫,如果我要在我的android應用程序中使用我現有的C++代碼,我仍然需要編譯和鏈接stdC++並將其作爲靜態/共享庫進行升級。我會怎麼做? – devgp