2014-07-23 81 views
1

我一直在試圖從Eclipse的移植到Android Studio中的最後幾天,都經歷有關的依賴設置一些問題...搖籃嵌套,多項目,共享庫環境設置

這裏基本上是Eclipse項目存在依賴結構現在

- External Library 1 
- External Library 2 
- External Library 3 
. 
. 
. 
- External Library n 
    | 
    - CustomSetOfLibrariesProject (Library project with lots of custom classes, custom views, backend helper classes...) 
     | 
     | 
     - App_Type_A_Project - (Library project, on top of which I can create different apps (App001, App002) with different names, graphics, package etc. 
     | | 
     | - App_Type_A_Package001, App_Type_A_Package002, etc. ... (Actual final Android Type_A product submitted to Google Play) 
     | 
     | 
     - App_Type_B_Project - (Library project, on top of which I can create different apps (App001, App002) with different names, graphics, package etc. 
      | 
      - App_Type_B_Package001, App_Type_B_Package002, etc. ... (Actual final Android Type_B product submitted to Google Play) 

整個項目結構包括:

「CustomSetOfLibrariesProject」 - 大量的自定義類,自定義視圖,後端輔助類的...這個項目是依賴於所有requir的編輯外部庫如磁帶,Android的異步HTTP

的項目中的每一個總是基於「CustomSetOfLibrariesProject」 - 所以這是一個很大的共享庫,已經依賴於一些外部庫

這是磁盤文件結構

TOP DIRECTORY 
    | 
    - libs-android 
    | | 
    | - custom_set_of_libraries_project 
    | - external_lib_1 
    | - external_lib_2 
    | 
    - app_type_A_project 
    - app_type_B_project 
    - android-release 
     | 
     - app_type_A_package001 
     - app_type_A_package002 
     - app_type_B_package001 
     - app_type_B_package002 

我覺得真的很難實現Android Studio中這種依賴結構,顯然我遇到「錯誤:配置名稱爲‘默認’未找到。」。

任何建議,將不勝感激。

回答

0

我要做的就是爲每個外部庫,我創建了一個項目,並分別維持它(通常投影從github上和定製/ bug修復被我拉)

建立外部庫的項目生成的.jar或.aar文件。您可以將此文件複製到您的項目的libs文件夾或鏈接它(例如ln -s ../../ExternalLib/build/lib.jar ./lib.jar)

創建產品項目,併爲每個應用程序創建一個模塊。鏈接或複製所有外部的lib的jar文件到庫文件夾

編輯每個模塊的的build.gradle文件,如果你正在使用您的任何外部的lib的

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    // or 
    compile(name: 'externalLib1', ext: 'jar') 
    compile(name: 'externalLib2', ext: 'aar') 
} 

http://oi61.tinypic.com/n4fgp4.jpg

3級深層次:

項目「的gradle產出:settings.gradle

include ':app', ':lib1', ':CustomSetOfLibrariesProject' 

外部LIBRARY1:lib1.gradle

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 

共享庫的gradle產出:CustomSetOfLibrariesProject.gradle

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':lib1') 
} 

產品應用的gradle產出:app.gradle

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':CustomSetOfLibrariesProject') 
} 
+0

這涉及到問題的只是一小部分...它基本上是3級深層次結構,外部庫不是問題的主要部分。 – czaku

+0

僅將您的「CustomSetOfLibrariesProject」視爲外部庫, 或將其作爲主產品項目中的模塊。併爲每個產品應用程序的構建。gradle添加它作爲依賴 編譯項目(':CustomSetOfLibrariesProject') – Simon

+0

這就是我想要實現的,但「CustomSetOfLibrariesProject」有子項目,它不會編譯。 – czaku