如何避免对android中的依赖项的无知?

Sanjeet Pal Singh |

我刚刚将一些项目导入到我的 Android Studio 中,并在最新版本的 android SDK 即 v7 上测试该应用程序,但是当我尝试在旧设备上测试该应用程序时,该应用程序无法正常工作,因为应用程序包含身份验证活动在 v7 上成功运行,但不能在旧的 android 设备上运行。

org.apache.httpcomponents:httpmime:4.5.1'

我注意到上面的依赖被忽略了。我知道在 API 23 之后,这种依赖会被贬值。有没有什么方法可以避免 gradle 的无知?因为我的整个应用程序都基于http 组件

应用程序的 Gradle 文件是:

代码更新

    apply plugin: 'com.android.application'

android {

    compileSdkVersion 23
    buildToolsVersion "25.0.0"
    useLibrary 'org.apache.http.legacy'


    defaultConfig {
        applicationId "com.creative.nerdzprocollegemanager"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        debug {
            debuggable true
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets { main { res.srcDirs = ['src/main/res', 'src/main/res/values-fr'] } }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'org.apache.httpcomponents:httpmime:4.5.1'
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

}

应用功能是:

@Override
 protected String doInBackground(Void...params) {
  byte[] result;
  String resultString = "";
  HttpClient httpClient = new DefaultHttpClient();
  HttpPost httpPost = new HttpPost(url);
  try {
   ArrayList < NameValuePair > nameValuePairs = new ArrayList < > ();
   for (String key: postParams.keySet()) {
    nameValuePairs.add(new BasicNameValuePair(key, postParams.get(key)));
   }
   httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
   HttpResponse response = httpClient.execute(httpPost);
   StatusLine statusLine = response.getStatusLine();

   if (statusLine.getStatusCode() == HttpURLConnection.HTTP_OK) {
    errorMessage = "ok";
    result = EntityUtils.toByteArray(response.getEntity());
    resultString = new String(result, "UTF-8");
   }
  } catch (UnsupportedEncodingException e) {
   errorMessage = "Encoding is not supported";
  } catch (Exception e) {
   errorMessage = "An error occurred";
  }
  return resultString;
 }

 @Override
 protected void onPostExecute(String s) {
  if (errorMessage.equals("ok")) {
   sourceActivity.requestFinished(s, requestTag);
  } else
   sourceActivity.requestFailed(errorMessage, requestTag);
 }
 }

有什么方法可以避免 gradle 对依赖项的无知?或者我应该使用一些替代 httpclient 的方法?请建议我一些解决方案,因为我对 android 没有太多经验。

尼金马普

将此行添加到 android 端的 gradle 文件中

android{
...
useLibrary 'org.apache.http.legacy'
...
}

编辑:也替换

compile group: 'cz.msebera.android' , name: 'httpclient', version:                                
       '4.4.1.1'

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

或者

compile 'org.apache.httpcomponents:httpclient:4.5.1'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Memory Guide中的“避免依赖项注入框架”也适用于Dagger吗?

来自分类Dev

如何避免在Gitlab CI中为每个作业重新安装依赖项

来自分类Dev

如何在我的Android库中包含依赖项

来自分类Dev

如何在android studio中编辑依赖项/外部库?

来自分类Dev

在Android Studio中,如何找到要添加的依赖项?

来自分类Dev

如何避免useEffect挂钩中的递归依赖项

来自分类Dev

如何避免仅为依赖项注入添加伪类型参数

来自分类Dev

C ++避免或管理MSVC中的循环项目依赖项

来自分类Dev

C ++避免或管理MSVC中的循环项目依赖项

来自分类Dev

Maven避免下载依赖项

来自分类Dev

Maven避免下载依赖项

来自分类Dev

如何避免在活动中设置我所有组件的模块以使用Dagger 2注入依赖项?

来自分类Dev

如何安装Android的构建依赖项?

来自分类Dev

如何避免在MySQL中插入重复项?

来自分类Dev

如何避免arangoDB中的重复项

来自分类Dev

无法在Android Studio中添加依赖项

来自分类Dev

Maven中的Android Firebase依赖项

来自分类Dev

Android中的gradle依赖项错误

来自分类Dev

在Android Studio中编译Braintree依赖项

来自分类Dev

在Android Studio中找不到依赖项

来自分类Dev

在Android中添加依赖项时出错

来自分类Dev

android(androidx)中的RecyclerView依赖项?

来自分类Dev

在Android中添加依赖项时出错

来自分类Dev

Android Studio:gradle 中的 Espresso 依赖项

来自分类Dev

如何防止依赖项在Ant中执行?

来自分类Dev

如何在Gradle中更新依赖项

来自分类Dev

JavaScript 中如何捆绑嵌套依赖项

来自分类Dev

如何交换laravel容器中的依赖项

来自分类Dev

如何从Android中的gradle依赖项添加的外部库目录中删除jar文件?

Related 相关文章

热门标签

归档