简体   繁体   中英

android Error:Execution failed for task ':app:packageDebug'

my function

    public static String postFile(String url,String fileName, String userName) throws Exception {

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

    final File file = new File(fileName);

    ContentBody cfile=new FileBody(file);
    builder.addPart("file",cfile);
    builder.addTextBody("userName", userName);

    final HttpEntity yourEntity = builder.build();

    class ProgressiveEntity implements HttpEntity {
        @Override
        public void consumeContent() throws IOException {
            yourEntity.consumeContent();
        }
        @Override
        public InputStream getContent() throws IOException,
                IllegalStateException {
            return yourEntity.getContent();
        }
        @Override
        public Header getContentEncoding() {
            return yourEntity.getContentEncoding();
        }
        @Override
        public long getContentLength() {
            return yourEntity.getContentLength();
        }
        @Override
        public Header getContentType() {
            return yourEntity.getContentType();
        }
        @Override
        public boolean isChunked() {
            return yourEntity.isChunked();
        }
        @Override
        public boolean isRepeatable() {
            return yourEntity.isRepeatable();
        }
        @Override
        public boolean isStreaming() {
            return yourEntity.isStreaming();
        } // CONSIDER put a _real_ delegator into here!

        @Override
        public void writeTo(OutputStream outstream) throws IOException {

            class ProxyOutputStream extends FilterOutputStream {
                /**
                 * @author Stephen Colebourne
                 */

                public ProxyOutputStream(OutputStream proxy) {
                    super(proxy);
                }
                public void write(int idx) throws IOException {
                    out.write(idx);
                }
                public void write(byte[] bts) throws IOException {
                    out.write(bts);
                }
                public void write(byte[] bts, int st, int end) throws IOException {
                    out.write(bts, st, end);
                }
                public void flush() throws IOException {
                    out.flush();
                }
                public void close() throws IOException {
                    out.close();
                }
            } // CONSIDER import this class (and risk more Jar File Hell)

            class ProgressiveOutputStream extends ProxyOutputStream {
                public ProgressiveOutputStream(OutputStream proxy) {
                    super(proxy);
                }
                public void write(byte[] bts, int st, int end) throws IOException {

                    // FIXME  Put your progress bar stuff here!

                    out.write(bts, st, end);
                }
            }

            yourEntity.writeTo(new ProgressiveOutputStream(outstream));
        }

    };
    ProgressiveEntity myEntity = new ProgressiveEntity();

    post.setEntity(myEntity);
    HttpResponse response = client.execute(post);

    return getContent(response);

}

public static String getContent(HttpResponse response) throws IOException {
    BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    String body = "";
    String content = "";

    while ((body = rd.readLine()) != null)
    {
        content += body + "\n";
    }
    return content.trim();
}

my gradle dependencies

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'

compile "org.apache.httpcomponents:httpmime:4.3.6"
compile "org.apache.httpcomponents:httpclient:4.3.6"
compile "org.apache.httpcomponents:httpcore:4.2.4"

}

build run error message:

Error:Execution failed for task ':app:packageDebug'.

Duplicate files copied in APK META-INF/DEPENDENCIES File 1: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar File 2: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar } } android { packagingOptions { exclude 'META-INF/DEPENDENCIES' You can ignore those files in your build.gradle: Origin 2: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.3.6/cf8bacbf0d476c7f2221f861269365b66447f7ec/httpmime-4.3.6.jar Origin 1: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar Path in archive: META-INF/DEPENDENCIES :app:packageDebug Error:duplicate files during packaging of APK /home/bekir/AndroidStudioProjects/uploadfile/app/build/outputs/apk/app-debug-unaligned.apk :app:validat eDebugSigning :app:processDebugJavaRes UP-TO-DATE :app:dexDebug UP-TO-DATE :app:preDexDebug UP-TO-DATE :app:compileDebugJava UP-TO-DATE :app:generateDebugSources UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:compileDebugAidl UP-TO-DATE :app:prepareDebugDependencies :app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE :app:preReleaseBuild :app:preDebugBuild :app:compileDebugNdk UP-TO-DATE :app:checkDebugManifest :app:preBuild

Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages In case of problem, please repackage it with jarjar to change the class packages Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages Information:Gradle tasks [:app:assembleDebug] Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for debug as it may be conflicting with the internal version provided by Android.

Error:Execution failed for task ':app:packageDebug'.

Duplicate files copied in APK META-INF/DEPENDENCIES File 1: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar File 2: /home/bekir/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar

For the duplicated files error use:

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

it shoud resolve many "Duplicate files" not only with apache's libs and the dependency error can be ignored.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM