Ich habe gerade ein Projekt in mein Android Studio importiert und testete die Anwendung auf der neuesten Version von Android SDK dh v7, aber wenn ich versuche, die Anwendung auf alten Geräten zu testen, funktioniert die Anwendung nicht, da die Anwendung aus Authentifizierungsaktivität besteht Das funktioniert erfolgreich auf v7, aber nicht auf alten Android-Geräten.Wie Ignoranz von Abhängigkeiten in Android vermeiden?
org.apache.httpcomponents: httpmime: 4.5.1'
Ich bemerkte, dass über Abhängigkeit ignoriert zu werden. Ich weiß, dass nach API 23 diese Abhängigkeit abgeschrieben wird. Gibt es irgendeine Methode, um Ignoranz von Gradle zu vermeiden? Da meine gesamte Anwendung auf HTTP-Komponenten basiert.
Gradle Datei Anwendungsbereich ist:
-Code Aktualisiert
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'
}
Die Anwendungsfunktion ist:
@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);
}
}
Gibt es eine Methode Unkenntnis der Abhängigkeiten von gradle zu vermeiden? Oder sollte ich eine Alternative zu httpclient verwenden? Bitte schlagen Sie mir eine Lösung vor, da ich nicht viel Erfahrung mit Android habe.
Fügen Sie diese in Ihrer Anwendung build.gradle android Tag useLibrary 'org.apache.http.legacy' lilke android { compileSdkVersion 23 buildToolsVersion "23.0.0" useLibrary 'org.apache.http.legacy' . .. } –