Как подключить библиотеку asmack?

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Как подключить библиотеку asmack?

Сообщение widg » 04 фев 2014, 14:52

понадобилось мне поработать с jabber, нашёл инструкцию как отправить сообщение http://programador.ru/xmpp-smack/
но написано без подробностей, объясните как подключить библиотеку?

Код: Выделить всё

<dependencies>
        <dependency>
            <groupid>jivesoftware</groupid>
            <artifactid>smack</artifactid>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupid>jivesoftware</groupid>
            <artifactid>smackx</artifactid>
            <version>3.1.0</version>
        </dependency>
</dependencies><dependencies>
</dependencies>
куда это вставить?

работаю в android studio

Заранее спасибо за ответы!

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 04 фев 2014, 14:58

это maven зависимость, вам нужно просто использовать mavenCentral репозиторий, тут показанно как: http://stackoverflow.com/a/16595686/2611075
Изображение

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как подключить библиотеку asmack?

Сообщение rezak90 » 04 фев 2014, 15:00

там же в градле две строки прописывается и всё
R.id.team
Политика на форуме запрещена

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 04 фев 2014, 15:22

rezak90 писал(а):там же в градле две строки прописывается и всё
ну да, пример по ссылке и показывает как сформировать эти строки из maven dependency, не все же кладут свои либы в gradle репозитории, да и зачем, как по мне maven удобнее. :)
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 05 фев 2014, 08:13

спасибо, но ещё разбираюсь как использовать maven и gradle, мой знакомый написал мне:
>>Ну могу сказать, что то что вы используете это не gradle, а maven.
>>Для того что бы использовать те библиотеки, что вам нужно, попробуйте их скачать себе локально!

решил скачать локально, нашёл тут http://asmack.freakempire.de/0.8.9beta4/ скачал asmack-android-18-0.8.9beta4.jar положил в проект на eclipse в папку libs, выполнил следующие действия: Properties → Java Build Path → Libraries → Add Jar.

Как теперь использовать её?
Вложения
2014-02-05_111142.png
2014-02-05_111142.png (29.73 КБ) 10328 просмотров

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как подключить библиотеку asmack?

Сообщение rezak90 » 05 фев 2014, 10:31

Зачем же было качать? в gradle указывается ссылка на maven проект и gradle сам их скачивает и запускает так как надо. В этом вся и прелесть.
widg писал(а):Как теперь использовать её?
мда... зачем её было качать если не знаешь как использовать? А вообще есть же FAQ по ней https://github.com/Flowdalic/asmack
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как подключить библиотеку asmack?

Сообщение rezak90 » 05 фев 2014, 10:31

кстати, рекомендую посмотреть на лицензию перед тем как использовать
R.id.team
Политика на форуме запрещена

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 05 фев 2014, 10:33

на будущее качать библиотеки лучше от сюда: http://search.maven.org/#search%7Cga%7C ... lectric%22 (если там нет, может она и не надо...)
Если библиотека подключенна и добавленна в проект, используете как любой другой класс, просто import.
Я никогда не пользовался eclipse, потому не уверен, но вообще не зачем качать jar и копировать в проект, в Android Studio нажимаете File->ProjectStructure->Modules(справа), далее в центральном окне вкладку Dependencies, потом слева +(плюс зеленого цвета), там есть импорт из maven репозитория(но опять же лучше gradle использовать), вы просто пишите название и он сам все найдет / предложит выбор. Что то такое должно быть в eclipse, нужно поискать.
Еще можно просто почитать тут: http://stackoverflow.com/questions/3280 ... in-eclipse
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 05 фев 2014, 11:07

Вот это спасибо!
Да я в Android Studio ещё не ориентируюсь, а в эклипсе по урокам повторял, так более менее понимаю!

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 06 фев 2014, 19:27

widg писал(а):Вот это спасибо!
Да я в Android Studio ещё не ориентируюсь, а в эклипсе по урокам повторял, так более менее понимаю!
вообще наверно правильнее будет, если уж вы подключаете jar в Android Studio, которая использует gradle для сборки, то, кладете jar файл в папку 'libs', далее в файл build.gradle, в секцию dependencies добавляете строку:
"compile fileTree(dir: 'libs', include: '*.jar')"

Код: Выделить всё

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 10 фев 2014, 14:34

как теперь обратиться к библиотеке, я уже что только в import не писал..
Вложения
как использовать теперь?
как использовать теперь?
Снимок экрана 2014-02-10 в 17.29.17.png (277.12 КБ) 10275 просмотров
вот так я прикрепил jar'ы
вот так я прикрепил jar'ы
Снимок экрана 2014-02-10 в 17.27.24.png (187.63 КБ) 10275 просмотров

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 11 фев 2014, 06:51

нашел:
import org.jivesoftware.smackx.*
import org.jivesoftware.smack.*

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 11 фев 2014, 07:29

новый стопор!
cannot resolve symbol 'supportSASLMechanism'
cannot resolve symbol 'connect'
cannot resolve symbol 'login'
cannot resolve symbol 'sendMessage'

как это исправить?
Вложения
ошибки
ошибки
Снимок экрана 2014-02-11 в 10.24.24.png (321.74 КБ) 10268 просмотров

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 11 фев 2014, 12:11

widg писал(а):новый стопор!
cannot resolve symbol 'supportSASLMechanism'
cannot resolve symbol 'connect'
cannot resolve symbol 'login'
cannot resolve symbol 'sendMessage'

как это исправить?
а если так?
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
вообще стоит проверить импорты(убрать все * и ипортировать явно), сделать invalidate caches / restart.
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 11 фев 2014, 12:19

Код: Выделить всё

public void Send(View v) {
       ConnectionConfiguration config = new ConnectionConfiguration("jabber.ru", 5222, "jabber.ru");
    // Внимание! Следующая строчка очень важна!
    SASLAuthentication.supportSASLMechanism("PLAIN", 0);
    XMPPConnection connection = new XMPPConnection(config);
        try {
            connection.connect();
        } catch (XMPPException e) {
            e.printStackTrace();
        }
        try {
            connection.login("login", "*****"); // т.е. не login@jabber.ru, а просто login
        } catch (XMPPException e) {
            e.printStackTrace();
        }

    }
Вот так приложение установилось в эмулятор, но при нажатие на кнопку выдаёт - К сожалению приложение остановленно!

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 11 фев 2014, 12:24

widg писал(а):

Код: Выделить всё

public void Send(View v) {
       ConnectionConfiguration config = new ConnectionConfiguration("jabber.ru", 5222, "jabber.ru");
    // Внимание! Следующая строчка очень важна!
    SASLAuthentication.supportSASLMechanism("PLAIN", 0);
    XMPPConnection connection = new XMPPConnection(config);
        try {
            connection.connect();
        } catch (XMPPException e) {
            e.printStackTrace();
        }
        try {
            connection.login("login", "*****"); // т.е. не login@jabber.ru, а просто login
        } catch (XMPPException e) {
            e.printStackTrace();
        }

    }
Вот так приложение установилось в эмулятор, но при нажатие на кнопку выдаёт - К сожалению приложение остановленно!
вообще есть issue: https://github.com/Flowdalic/asmack/issues/23 и их не мало. В любом случае нужен вывод дебагера. Просто так угадать почему оно упало просто не возможно.
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 11 фев 2014, 12:27

Согласен! Изучаю как логировать события!
Пока без отправки сообщений просто подключиться пытаюсь.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как подключить библиотеку asmack?

Сообщение altwin » 11 фев 2014, 12:32

widg писал(а):Согласен! Изучаю как логировать события!
Пока без отправки сообщений просто подключиться пытаюсь.
ну если все пермишены указанны и конфигурация правильная(т.е. jabber.ru доступен для подключения), то причина в какой -то внутренней ошибке. Нужно смотреть какие исключения выбрасываются и что там вообще происходит, в общем идти путем доктора Хауса :)
Изображение

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 11 фев 2014, 18:12

Код: Выделить всё

02-04 16:20:53.633      292-325/system_process W/InputDispatcher﹕ channel '40edac18 com.example.app/com.example.app.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
02-04 16:20:53.633      292-325/system_process E/InputDispatcher﹕ channel '40edac18 com.example.app/com.example.app.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
02-04 16:20:53.811      292-431/system_process I/WindowState﹕ WIN DEATH: Window{40edac18 u0 com.example.app/com.example.app.MainActivity}
02-04 16:20:53.811      292-431/system_process W/InputDispatcher﹕ Attempted to unregister already unregistered input channel '40edac18 com.example.app/com.example.app.MainActivity (server)'
log'и смотрю, вот это имеет какое-то значение из-за чего приложение не работает?

widg
Сообщения: 23
Зарегистрирован: 25 окт 2013, 09:20

Re: Как подключить библиотеку asmack?

Сообщение widg » 12 фев 2014, 07:30

раставил логи:

Код: Выделить всё

 public void Send(View v) {
    ConnectionConfiguration config = new ConnectionConfiguration("jabber.ru", 5222, "jabber.ru");
    SASLAuthentication.supportSASLMechanism("PLAIN", 0);
    XMPPConnection connection = new XMPPConnection(config);
        Log.i(TAG, "XMPP до коннекта");
        try {
            connection.connect();
            Log.i(TAG, "Connected to " + connection.getHost());
        } catch (XMPPException e) {
            e.printStackTrace();
            Log.i(TAG, "Failed to connect to " + connection.getHost());
            Log.i(TAG, "XMPPC" + e.toString());
        } .....
но ко коннекта не доходит!

Код: Выделить всё

02-10 14:07:37.811    2355-2358/com.example.app D/dalvikvm﹕ GC_CONCURRENT freed 102K, 6% free 4121K/4340K, paused 4ms+16ms, total 53ms
02-10 14:07:38.092    2355-2358/com.example.app D/dalvikvm﹕ GC_CONCURRENT freed 254K, 8% free 4355K/4728K, paused 5ms+4ms, total 60ms
02-10 14:07:38.362    2355-2355/com.example.app I/MyActivity﹕ XMPP до коннекта
02-10 14:07:38.362    2355-2355/com.example.app D/AndroidRuntime﹕ Shutting down VM
02-10 14:07:38.372    2355-2355/com.example.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40a71930)
02-10 14:07:38.392    2355-2355/com.example.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3599)
            at android.view.View.performClick(View.java:4204)
            at android.view.View$PerformClick.run(View.java:17355)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3594)
            at android.view.View.performClick(View.java:4204)
            at android.view.View$PerformClick.run(View.java:17355)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
            at java.net.InetAddress.getByName(InetAddress.java:289)
            at java.net.InetSocketAddress.<init>(InetSocketAddress.java:105)
            at java.net.InetSocketAddress.<init>(InetSocketAddress.java:90)
            at org.jivesoftware.smack.proxy.DirectSocketFactory.createSocket(DirectSocketFactory.java:28)
            at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:888)
            at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:1415)
            at com.example.app.MainActivity.Send(MainActivity.java:189)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3594)
            at android.view.View.performClick(View.java:4204)
            at android.view.View$PerformClick.run(View.java:17355)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
02-10 14:07:38.422      280-292/system_process W/ActivityManager﹕ Force finishing activity com.example.app/.MainActivity
02-10 14:07:38.432      280-292/system_process W/WindowManager﹕ Failure taking screenshot for (328x546) to layer 21020
02-10 14:07:38.612       37-174/? E/SurfaceFlinger﹕ ro.sf.lcd_density must be defined as a build property
02-10 14:07:38.942      280-294/system_process W/ActivityManager﹕ Activity pause timeout for ActivityRecord{40d25a78 u0 com.example.app/.MainActivity}
02-10 14:07:39.292       37-174/? E/SurfaceFlinger﹕ ro.sf.lcd_density must be defined as a build property
02-10 14:07:40.542    2355-2355/? I/Process﹕ Sending signal. PID: 2355 SIG: 9
02-10 14:07:40.562      280-537/system_process I/ActivityManager﹕ Process com.example.app (pid 2355) has died.
02-10 14:07:40.572      280-313/system_process W/InputDispatcher﹕ channel '40d354d8 com.example.app/com.example.app.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
02-10 14:07:40.572      280-313/system_process E/InputDispatcher﹕ channel '40d354d8 com.example.app/com.example.app.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
02-10 14:07:40.572      280-466/system_process I/WindowState﹕ WIN DEATH: Window{40d354d8 u0 com.example.app/com.example.app.MainActivity}
02-10 14:07:40.582      280-466/system_process W/InputDispatcher﹕ Attempted to unregister already unregistered input channel '40d354d8 com.example.app/com.example.app.MainActivity (server)'
02-10 14:07:40.851      280-463/system_process W/InputMethodManagerService﹕ Got RemoteException sending setActive(false) notification to pid 2355 uid 10046
02-10 14:07:53.783      694-780/com.android.exchange D/ExchangeService﹕ Received deviceId from Email app: null
02-10 14:07:53.783      694-780/com.android.exchange D/ExchangeService﹕ !!! deviceId unknown; stopping self and retrying
02-10 14:07:58.792      694-710/com.android.exchange D/ExchangeService﹕ !!! EAS ExchangeService, onCreate
02-10 14:07:58.792      694-694/com.android.exchange D/ExchangeService﹕ !!! EAS ExchangeService, onStartCommand, startingUp = false, running = false
02-10 14:07:58.802      280-510/system_process W/ActivityManager﹕ Unable to start service Intent { act=com.android.email.ACCOUNT_INTENT } U=0: not found
02-10 14:07:58.802      694-711/com.android.exchange D/ExchangeService﹕ !!! Email application not found; stopping self
02-10 14:07:58.802      280-553/system_process W/ActivityManager﹕ Unable to start service Intent { act=com.android.email.ACCOUNT_INTENT } U=0: not found
02-10 14:07:58.802      694-694/com.android.exchange D/ExchangeService﹕ !!! EAS ExchangeService, onStartCommand, startingUp = true, running = false
02-10 14:07:58.822      694-694/com.android.exchange E/ActivityThread﹕ Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d22870 that was originally bound here
    android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d22870 that was originally bound here
            at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
Помогите, куда дальше копать?

Ответить