mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 14:22:05 +01:00
Add AndroidSmackInitializer.initialize(Context)
This commit also changes the usage of the android.jar found in the androidBootClasspath gradle variable, because AndroidSmackInitializer.initialize(Context) pulls in org.minidns.dnsserverlookup.android21.AndroidUsingLinkProperties from minidns-android21, which has a @TargetApi annotation which is only available on Android SDK API level 16 or higher. Otherwhise we would get > Task :smack-android:compileJava FAILED /home/flo/.gradle/caches/modules-2/files-2.1/org.minidns/minidns-android21/0.3.0/13f273d095e51d701283062a25e867f3ff26d258/minidns-android21-0.3.0.jar(/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.class): warning: Cannot find annotation method 'value()' in type 'TargetApi': class file for android.annotation.TargetApi not found /home/flo/.gradle/caches/modules-2/files-2.1/org.minidns/minidns-android21/0.3.0/13f273d095e51d701283062a25e867f3ff26d258/minidns-android21-0.3.0.jar(/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.class): warning: Cannot find annotation method 'value()' in type 'TargetApi' error: warnings found and -Werror specified 1 error when compiling smack-android.
This commit is contained in:
parent
8fbe84ad4b
commit
ab30b0c921
3 changed files with 30 additions and 5 deletions
|
@ -1,7 +1,7 @@
|
||||||
language: android
|
language: android
|
||||||
android:
|
android:
|
||||||
components:
|
components:
|
||||||
- android-9
|
- android-16
|
||||||
jdk:
|
jdk:
|
||||||
- oraclejdk8
|
- oraclejdk8
|
||||||
sudo: false
|
sudo: false
|
||||||
|
|
15
build.gradle
15
build.gradle
|
@ -428,7 +428,7 @@ subprojects {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
configure (androidProjects) {
|
configure (androidProjects + androidBootClasspathProjects) {
|
||||||
apply plugin: 'ru.vyarus.animalsniffer'
|
apply plugin: 'ru.vyarus.animalsniffer'
|
||||||
dependencies {
|
dependencies {
|
||||||
signature "net.sf.androidscents.signature:android-api-level-${smackMinAndroidSdk}:2.3.1_r2@signature"
|
signature "net.sf.androidscents.signature:android-api-level-${smackMinAndroidSdk}:2.3.1_r2@signature"
|
||||||
|
@ -580,12 +580,21 @@ def getGitCommit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
def getAndroidRuntimeJar() {
|
def getAndroidRuntimeJar() {
|
||||||
|
// We set a different Android API level compared to
|
||||||
|
// smackMinAndroidSdk here. The runtime jar retrieved via this
|
||||||
|
// method is, compared to earlier Smack versions, not used to
|
||||||
|
// check for Android API compatibility. Instead it is used to for
|
||||||
|
// the eclipse classpath, for javadoc and when compiling the pure
|
||||||
|
// Android subprojects of Smack. Currently we require level 16
|
||||||
|
// here, because of the @TargetApi annotation found in
|
||||||
|
// AndroidUsingLinkProperties of minidns-android21.
|
||||||
|
def androidApiLevel = 16
|
||||||
def androidHome = getAndroidHome()
|
def androidHome = getAndroidHome()
|
||||||
def androidJar = new File("$androidHome/platforms/android-$smackMinAndroidSdk/android.jar")
|
def androidJar = new File("$androidHome/platforms/android-${androidApiLevel}/android.jar")
|
||||||
if (androidJar.isFile()) {
|
if (androidJar.isFile()) {
|
||||||
return androidJar
|
return androidJar
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("Can't find android.jar for $smackMinAndroidSdk API. Please install corresponding SDK platform package")
|
throw new Exception("Can't find android.jar for $androidApiLevel API. Please install corresponding SDK platform package")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014-2017 Florian Schmaus
|
* Copyright © 2014-2018 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -25,8 +25,15 @@ import org.jivesoftware.smack.util.stringencoder.Base64UrlSafeEncoder;
|
||||||
import org.jivesoftware.smack.util.stringencoder.android.AndroidBase64Encoder;
|
import org.jivesoftware.smack.util.stringencoder.android.AndroidBase64Encoder;
|
||||||
import org.jivesoftware.smack.util.stringencoder.android.AndroidBase64UrlSafeEncoder;
|
import org.jivesoftware.smack.util.stringencoder.android.AndroidBase64UrlSafeEncoder;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import org.apache.http.conn.ssl.StrictHostnameVerifier;
|
import org.apache.http.conn.ssl.StrictHostnameVerifier;
|
||||||
|
import org.minidns.dnsserverlookup.android21.AndroidUsingLinkProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class initialized Smack for you on Android. Unfortunately it can't do it automatically, you should call
|
||||||
|
* {@link #initialize(Context)} once before performing your first XMPP connection with Smack. Note that on Android 21 or
|
||||||
|
* higher you need to hold the ACCESS_NETWORK_STATE permission.
|
||||||
|
*/
|
||||||
public class AndroidSmackInitializer implements SmackInitializer {
|
public class AndroidSmackInitializer implements SmackInitializer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,4 +44,13 @@ public class AndroidSmackInitializer implements SmackInitializer {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes Smack on Android. You should call this method fore performing your first XMPP connection with Smack.
|
||||||
|
*
|
||||||
|
* @param context an Android context.
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public static void initialize(Context context) {
|
||||||
|
AndroidUsingLinkProperties.setup(context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue