Studioを0.3.7から0.4.0に更新した後、プロジェクトをコンパイルできません。 stackoverflowで解決策を見つけました: 重複ファイルのコピー(Android Studio 0.4.0)
プロジェクトをgradle 0.7。+に更新しましたが、次の文字列をどこに配置する必要があるのかわかりません。
Android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
私のlogcat:ログ
Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
追伸Ubuntu 13.04で開発する
依存関係を一番上に配置し、packageOptionsを最後に配置するとうまくいきました。
apply plugin: 'Android'.
これは、appフォルダーにあるbuild.gradleの完全版です。
dependencies {
compile 'com.Android.support:support-v4:+'
compile files('libs/Apache-mime4j-0.6.jar')
compile files('libs/httpmime-4.0.jar')
}
Android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 10
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard- rules.txt'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}
編集:ほとんどすべてのOSライセンスには、「ライセンスのコピーをプロジェクトに含める」義務が含まれています。つまり、使用するすべてのOSライセンスのコピーをプロジェクトに含める必要があるということです。それらを段階的に「除外」することにより、ライセンスに違反します。
それらをプロジェクトから除外するのは最良の選択肢ではないかもしれません。どうもありがとう情報のために。
注意!! OpenSourceライセンス違反の可能性。
上記のようにlicense.txtファイルを除外すると、ソースに追加することに同意することがオープンソースライセンスの一般的なポイントであるため、一部のオープンソースライセンスに違反する可能性があります。オープンソースライセンスを確認してください。
更新:より良い解決策が見つかるまで、
packagingOptions {
pickFirst 'META-INF/license.txt'
}
このように、少なくともライセンス義務の一部を果たします
追加するだけ
Android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
build.gradleで
次のコードをproject/app/build.gradle
に追加することで修正できます。
Android {
// Fixed build error : Duplicate files copied in APK META-INF/xxx
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
}
}
私はgradleの新しいバージョンごとに同じ問題に直面していました、以下のbuild.gradleテキスト形式の作業:
私のlibsフォルダーには2つのジャクソンjarファイルがあります。
Android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.omtlab.myapplication"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'libs/jackson-core-asl-1.9.13.jar'
exclude 'libs/jackson-mapper-asl-1.9.13.jar'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
}
dependencies {
//compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.Android.support:appcompat-v7:21.0.3'
compile files('libs/jackson-core-asl-1.9.13.jar')
compile files('libs/jackson-mapper-asl-1.9.13.jar')
}
このコードを挿入しながら
Android{
packagingOptions{
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}
MAKE SURE if in errorそれが表示されている
> APKでコピーされた重複ファイルMETA-INF/LICENSE.txt
それから加えて
Android{
packagingOptions{
exclude 'META-INF/LICENSE.txt'
}
}
エラーの場合
> APKにコピーされた重複ファイルMETA-INF/LICENSE
それから加えて
Android{
packagingOptions{
exclude 'META-INF/LICENSE'
}
}
エラーの場合
> APK META-INF/license.txtにコピーされた重複ファイル
それから加えて
Android{
packagingOptions{
exclude 'META-INF/license.txt'
}
}
短いテキストでは、CASEとドキュメントFORMAT(.txt)が非常に重要です。
(このエラーはAndroid Studio 1.1.0にも存在します)
追加:
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
私のために働いた、biniam_Ethiopiaのソリューションはおそらく最もフェイルセーフです
これは問題の解決に役立ちます
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/DEPENDENCIES'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
build.gradleファイルに追加してプロジェクトを同期
2を追加するだけです。
Android{
packagingOptions{
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
}
}
Java-jwt
とjackson-core
を一緒に使用する場合は、次を使用します。
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")
同様のエラーが発生し、packingOptions()
およびexclude
関数を使用せずに解決しました。 2つの依存関係を追加しましたが、1つは最初の依存関係のサブグループでした。これによりエラーが発生し、そのうちの1つを削除すると、クリーンビルドになりました。依存関係ブロック内で同様のエラーをチェックすることをお勧めします。
これは非常に悪い習慣かもしれませんが、複数の大きなライブラリを含める場合は、これらの種類の競合を何百も経験することになります。
そのような場合の超簡単な修正を以下にリストします。
Android {
....
packagingOptions {
// Allow the compilation process to choose the dependencies for us.
pickFirst "**"
}
}