安卓错误 :Execution failed for task ':app:packageDebug'

标签 android apache http core multipartentity

我的功能

    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();
}

我的gradle依赖

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"

构建运行错误信息:

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:validateDebugSigning :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

警告:依赖 org.apache.httpcomponents:httpclient:4.3.6 被忽略发布,因为它可能与 Android 提供的内部版本冲突。 如有问题,请用jarjar重新打包,更改类包 如有问题,请用jarjar重新打包,更改类包 警告:依赖 org.apache.httpcomponents:httpclient:4.3.6 被忽略发布,因为它可能与 Android 提供的内部版本冲突。 如有问题,请用jarjar重新打包,更改类包 警告:依赖 org.apache.httpcomponents:httpclient:4.3.6 被调试忽略,因为它可能与 Android 提供的内部版本冲突。 如有问题,请用jarjar重新打包,更改类包 信息:Gradle tasks [:app:assembleDebug] 警告:调试忽略依赖 org.apache.httpcomponents:httpclient:4.3.6,因为它可能与 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

最佳答案

对于重复文件错误使用:

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

它应该解决许多“重复文件”,而不仅仅是 apache 的库 并且可以忽略依赖错误。

关于安卓错误 :Execution failed for task ':app:packageDebug' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28984142/

相关文章:

android - 如何在 PC 中创建 Sqlite 数据库以在我的应用程序中使用?

php - 是否可以断开 http 客户端与 PHP 的连接?

javascript - Express.js : Convert req. body 变成 POST 编码的字符串

apache - 禁用访问日志中的查询字符串

linux - Zend框架主页

java - 拦截传出的 HTTP 请求

android - 如何从assets文件夹中打开一个excel文件

android - 当我想展示另一个 Toast 时,我可以取消之前的 Toast 吗?

android.content.res.Resources$NotFoundException 与最新版本的 SDK 构建工具

apache - 重写规则而不更改浏览器中的 URL