1. ホーム
  2. android

[解決済み] Android Studio 0.4 APKのMETA-INF/LICENSE.txtに重複したファイルがコピーされている。

2022-02-28 03:58:57

質問

Studioを0.3.7から0.4.0にアップデートした後、プロジェクトをコンパイルすることができなくなりました。スタックオーバーフローで解決策を見つけました。 重複したファイルがコピーされる(Android Studio 0.4.0)

プロジェクトをgradle 0.7.+にアップデートしましたが、次の文字列をどこに入れなければならないかわかりません。

android {

    packagingOptions {
       exclude 'META-INF/LICENSE.txt'
    }
}

私のログキャット:ログ

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'
    }
}

EDIT: ほとんどすべてのOSのライセンスには、「ライセンスのコピーをプロジェクトに含める」という義務があります。つまり、使用するすべてのOSのライセンスのコピーをプロジェクトに含める必要があるということです。gradleでそれらを除外することは、ライセンスに違反することになります。

プロジェクトから除外することは、最善の選択ではないかもしれません。 R.S.さん、情報をありがとうございました。