mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 06:12: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
|
||||
android:
|
||||
components:
|
||||
- android-9
|
||||
- android-16
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
sudo: false
|
||||
|
|
15
build.gradle
15
build.gradle
|
@ -428,7 +428,7 @@ subprojects {
|
|||
}
|
||||
}
|
||||
|
||||
configure (androidProjects) {
|
||||
configure (androidProjects + androidBootClasspathProjects) {
|
||||
apply plugin: 'ru.vyarus.animalsniffer'
|
||||
dependencies {
|
||||
signature "net.sf.androidscents.signature:android-api-level-${smackMinAndroidSdk}:2.3.1_r2@signature"
|
||||
|
@ -580,12 +580,21 @@ def getGitCommit() {
|
|||
}
|
||||
|
||||
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 androidJar = new File("$androidHome/platforms/android-$smackMinAndroidSdk/android.jar")
|
||||
def androidJar = new File("$androidHome/platforms/android-${androidApiLevel}/android.jar")
|
||||
if (androidJar.isFile()) {
|
||||
return androidJar
|
||||
} 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");
|
||||
* 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.AndroidBase64UrlSafeEncoder;
|
||||
|
||||
import android.content.Context;
|
||||
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 {
|
||||
|
||||
@Override
|
||||
|
@ -37,4 +44,13 @@ public class AndroidSmackInitializer implements SmackInitializer {
|
|||
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