2015-01-10 28 views
0

我在我的Android Studio項目中使用了一個jar,​​。現在,我也希望能夠看到這個源代碼,所以我將secretshare-1.4.1-sources.jar添加到libs forlder中,而無需將其添加到項目的依賴項中。這使我可以瀏覽圖書館的類別及其來源。如果源jar存在,Gradle不會生成

但問題是,如果我這樣做,我不能建立項目。問題似乎是兩個罐子有相同的類,所以gradle會給出重複的文件錯誤。但是源文件甚至不在build.gradle文件中。

這裏是我試圖運行示例代碼:

import com.tiemens.secretshare.main.cli.MainSplit; 
import java.io.ByteArrayOutputStream; 
import java.io.PrintStream; 
... 

public static void main(String[] args){ 
     String s = "test message"; 
     String k = "1"; 
     String n = "2"; 
     String[] splitArgs = {"-n", n, "-k", k, "-sS", s}; 
     MainSplit.SplitInput splitInput = MainSplit.SplitInput.parse(splitArgs); 
     MainSplit.SplitOutput splitOutput = splitInput.output(); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     PrintStream ps = new PrintStream(baos); 
     splitOutput.print(ps); 
     String content = baos.toString(); // e.g. ISO-8859-1 
     System.out.println(content); 
    } 
} 

這裏是的build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.sakhuja.ayush.secretsafe" 
     minSdkVersion 14 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile files('libs/activation.jar') 
    compile files('libs/additionnal.jar') 
    compile files('libs/mail.jar') 
    compile files('libs/secretshare-1.4.1.jar') 
} 

,我得到的錯誤信息是:

Error:Gradle: duplicate files during packaging of APK D:\z\Academics\Code\SecretSafe\app\build\outputs\apk\app-debug-unaligned.apk 
Error:Gradle: Execution failed for task ':app:packageDebug'. 
> Duplicate files copied in APK html/SecretShareApplet.html 
    File 1: D:\z\Academics\Code\SecretSafe\app\libs\secretshare-1.4.1.jar 
    File 2: D:\z\Academics\Code\SecretSafe\app\libs\secretshare-1.4.1.jar 

如果我從libs文件夾中刪除secretshare-1.4.1-sources.jar,錯誤就會消失。但我真的想保留它,因爲我想引用圖書館的源代碼。建議?

回答

2

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

是要搶在庫目錄每個罐子,包括secretshare-1.4.1-sources.jar。這也使得配置塊中的4個結束行不再需要。從文件樹明確排除secretshare-1.4.1-sources.jar:

fileTree(include: ['*.jar'], dir: 'libs', excludes: ['secretshare-1.4.1-sources.jar']) 

我也建議刪除從配置塊中的最後4行,但是這只是一個建議,而不是嚴格的問題。