2014-10-26 31 views
4

我正在使用Android Studio並具有多個依賴相同代碼的應用程序。我將共享代碼移動到單獨的庫中,以便將其包含在我的應用程序中。如何從我的Android庫構建目標中排除jar文件

我爲此創建的庫項目(MyLib)需要jar文件進行編譯,所以我將它添加到項目的libs目錄中。

build.gradle MyLib中主要模塊如下所示:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "20.0.0" 

    defaultConfig { 
     applicationId "com.example.android" 
     minSdkVersion 9 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 

    buildTypes { 
     release { 

     } 
    } 
} 

dependencies { 
    compile files('./libs/external-java-lib.jar') 
} 

當我生成項目,gradle這個生成的jar文件包含external-java-lib.jar

我希望我的Android應用程序項目提供「external-java-lib.jar」,而不是MyLib。因爲在我的應用程序中,我可能會使用不同版本的external-java-lib.jar

如何配置Gradle從我的庫項目的構建中排除external-java-lib.jar

我無法在網上找到我的問題的答案,所以我有一種感覺,我想要的東西是一個糟糕的設計。我還可以做些什麼?

預先感謝您。

回答

13

我終於解決了我的問題。

在我的圖書館項目中,我添加了另一個空模塊和移動external-java-lib.jarlibs文件夾。

主要模塊的build.gradle我加的依賴性:現在

dependencies { 
    compile project(':libraries')  
} 

我的目錄結構是:

MyLibrary 
├── build.gradle 
├── gradle.properties 
├── main 
│   ├── build.gradle 
│   └── src 
│    └── main 
│     ├── AndroidManifest.xml 
│     ├── java ... 
│     └── res ... 
├── libraries 
│   ├── build.gradle 
│   ├── libs 
│   │   ├── external-lib-1.jar 
│   │   └── external-lib-2.jar 
│   └── src 
│    └── main 
│     ├── AndroidManifest.xml 
│     ├── java ... 
│     └── res ... 
└── settings.gradle 

我建庫後,輸出AAR-一攬子計劃沒有external-java-lib.jar在裏面。所以,這正是我想要的。

+0

只有工作的解決方案。但是,你可以保持模塊分開和文件夾層次結構並不重要 – SourabhV 2017-06-15 21:03:20

0

我不知道android studio,但它易於在eclipse中,在Eclipse中右鍵單擊項目 - >屬性 - > java構建路徑那裏你有庫和java構建路徑。在那裏你可以排除或包含文件。

+0

它必須是非常簡單的,我需要的是將JAR添加到我的類路徑,並防止它被納入釋放庫的一部分。但我的項目是在Android Studio中使用Gradle。我想知道如何在Gradle中做到這一點。 – ntoskrnl 2014-10-26 18:58:34

+0

那麼我不知道很多gradle,對不起,但如果你能夠做到上述步驟,再次進口到gradle這將是雙贏的局面,我猜:-) – Hasan 2014-10-26 19:01:00

+0

我會盡力做到這一點作爲我的備份計劃。 :)首先,我想等任何人都可以幫我配置gradle。 – ntoskrnl 2014-10-26 19:06:09

1

如果不使用ProGuard那麼您只需使用提供標籤

dependencies { 
    provided files('./libs/external-java-lib.jar') 
} 
+0

這應該是正確的答案,完美! – Kinka 2016-02-25 07:25:49

+0

這似乎只是導致相同的事情,即。罐子包括在內? – 2016-08-25 07:44:46

+0

不起作用。該jar仍然包含在構建中。 – Guavaman 2016-11-04 20:17:58

相關問題