【问题标题】:Duplicate files during packaging of an APK in Android Studio?在 Android Studio 中打包 APK 期间文件重复?
【发布时间】:2015-05-02 08:39:55
【问题描述】:

我正在尝试使用 Twilio 中的库发送 SMS,但在将它们导入我的项目时遇到问题。我正在关注这个tutorial,他们说要创建pom.xml 并输入以下内容。

<dependency>
<groupId>com.twilio.sdk</groupId>
<artifactId>twilio-java-sdk</artifactId>
<version>3.4.5</version>
</dependency>

我找到了这个question 所以我按照答案并将依赖项转换为以下并将其添加到 build.gradle

compile 'com.twilio.sdk:twilio-java-sdk:3.4.5' 

编译时出现以下错误,我不知道如何修复它们。

然后我决定使用他们的 Pre-built jar,所以我将它们添加到我的依赖项中。构建的错误消失了,但是当我尝试按照上述教程发送短信时,在尝试发送时出现以下错误。

3-01 21:23:08.056  12507-12507/com.example.ammar.theguardian E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>
            at org.apache.http.impl.conn.SchemeRegistryFactory.createDefault(SchemeRegistryFactory.java:47)
            at org.apache.http.impl.conn.PoolingClientConnectionManager.<init>(PoolingClientConnectionManager.java:93)
            at com.twilio.sdk.TwilioClient.<init>(TwilioClient.java:140)
            at com.twilio.sdk.TwilioRestClient.<init>(TwilioRestClient.java:19)
            at com.example.ammar.theguardian.guardianService.sendTextMessage(guardianService.java:233)
            at com.example.ammar.theguardian.guardianService.onCreate(guardianService.java:53)
            at android.app.ActivityThread.handleCreateService(ActivityThread.java:2264)
            at android.app.ActivityThread.access$1600(ActivityThread.java:127)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4511)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:976)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:743)
            at dalvik.system.NativeStart.main(Native Method)

我该如何解决这个问题?谢谢!

更新:build.gradle 文件内容按照 cmets 的要求发布在这里

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.ammar.theguardian"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.twilio.sdk:twilio-java-sdk:3.4.5'
    compile 'org.apache.httpcomponents:httpclient:4.1.2'
}

【问题讨论】:

  • 添加此依赖并尝试..似乎存在多个相同类型的类..&lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt; &lt;version&gt;4.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt;
  • 我将其转换为 compile 'org.apache.httpcomponents:httpclient:4.1.2' 并得到相同的错误,但还有两个关于依赖性的警告。
  • 你也可以发布你的 build.gradle 文件吗..
  • 在 build.gradle 中删除这一行并尝试....我怀疑您的 libs 文件夹中有 .jar 文件...compile fileTree(dir: 'libs', include: ['*.jar'])
  • 我做了,但我仍然遇到同样的错误!

标签: android maven twilio


【解决方案1】:

这里是 Twilio 布道者。

这不会是 twilio 本身的问题,而是您尝试将 Java 库用于 Android 项目这一事实。

我知道 Android 也是 Java,所以理论上它应该可以工作 :-)

好吧,在发出 HTTP 请求时,情况并非如此,因为 Android 发出 HTTP 请求的方式略有不同,而且 org.apache.httpcomponents 不会简单地工作。我的建议是尝试使用 HttpClient for Android,它是 Android 的 org.apache.httpcomponents 端口。

它应该具有所有相同的命名空间,并且将其添加到您的 gradle.build 应该是添加以下内容:

dependencies {
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

我自己没有使用过,但会说这是一个好的开始,可能会解决您的问题。

告诉我。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2014-01-07
    • 1970-01-01
    • 2015-12-11
    • 2016-06-19
    • 2015-06-21
    • 2015-08-02
    • 2014-08-11
    相关资源
    最近更新 更多