Страница 1 из 2
Как подключить библиотеку asmack?
Добавлено: 04 фев 2014, 14:52
widg
понадобилось мне поработать с 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
Заранее спасибо за ответы!
Re: Как подключить библиотеку asmack?
Добавлено: 04 фев 2014, 14:58
altwin
это maven зависимость, вам нужно просто использовать mavenCentral репозиторий, тут показанно как:
http://stackoverflow.com/a/16595686/2611075
Re: Как подключить библиотеку asmack?
Добавлено: 04 фев 2014, 15:00
rezak90
там же в градле две строки прописывается и всё
Re: Как подключить библиотеку asmack?
Добавлено: 04 фев 2014, 15:22
altwin
rezak90 писал(а):там же в градле две строки прописывается и всё
ну да, пример по ссылке и показывает как сформировать эти строки из maven dependency, не все же кладут свои либы в gradle репозитории, да и зачем, как по мне maven удобнее.

Re: Как подключить библиотеку asmack?
Добавлено: 05 фев 2014, 08:13
widg
спасибо, но ещё разбираюсь как использовать 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.
Как теперь использовать её?
Re: Как подключить библиотеку asmack?
Добавлено: 05 фев 2014, 10:31
rezak90
Зачем же было качать? в gradle указывается ссылка на maven проект и gradle сам их скачивает и запускает так как надо. В этом вся и прелесть.
widg писал(а):Как теперь использовать её?
мда... зачем её было качать если не знаешь как использовать? А вообще есть же FAQ по ней
https://github.com/Flowdalic/asmack
Re: Как подключить библиотеку asmack?
Добавлено: 05 фев 2014, 10:31
rezak90
кстати, рекомендую посмотреть на лицензию перед тем как использовать
Re: Как подключить библиотеку asmack?
Добавлено: 05 фев 2014, 10:33
altwin
на будущее качать библиотеки лучше от сюда:
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
Re: Как подключить библиотеку asmack?
Добавлено: 05 фев 2014, 11:07
widg
Вот это спасибо!
Да я в Android Studio ещё не ориентируюсь, а в эклипсе по урокам повторял, так более менее понимаю!
Re: Как подключить библиотеку asmack?
Добавлено: 06 фев 2014, 19:27
altwin
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')
}
Re: Как подключить библиотеку asmack?
Добавлено: 10 фев 2014, 14:34
widg
как теперь обратиться к библиотеке, я уже что только в import не писал..
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 06:51
widg
нашел:
import org.jivesoftware.smackx.*
import org.jivesoftware.smack.*
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 07:29
widg
новый стопор!
cannot resolve symbol 'supportSASLMechanism'
cannot resolve symbol 'connect'
cannot resolve symbol 'login'
cannot resolve symbol 'sendMessage'
как это исправить?
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 12:11
altwin
widg писал(а):новый стопор!
cannot resolve symbol 'supportSASLMechanism'
cannot resolve symbol 'connect'
cannot resolve symbol 'login'
cannot resolve symbol 'sendMessage'
как это исправить?
а если так?
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
вообще стоит проверить импорты(убрать все * и ипортировать явно), сделать invalidate caches / restart.
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 12:19
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();
}
}
Вот так приложение установилось в эмулятор, но при нажатие на кнопку выдаёт - К сожалению приложение остановленно!
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 12:24
altwin
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 и их не мало. В любом случае нужен вывод дебагера. Просто так угадать почему оно упало просто не возможно.
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 12:27
widg
Согласен! Изучаю как логировать события!
Пока без отправки сообщений просто подключиться пытаюсь.
Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 12:32
altwin
widg писал(а):Согласен! Изучаю как логировать события!
Пока без отправки сообщений просто подключиться пытаюсь.
ну если все пермишены указанны и конфигурация правильная(т.е. jabber.ru доступен для подключения), то причина в какой -то внутренней ошибке. Нужно смотреть какие исключения выбрасываются и что там вообще происходит, в общем идти путем доктора Хауса

Re: Как подключить библиотеку asmack?
Добавлено: 11 фев 2014, 18:12
widg
Код: Выделить всё
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'и смотрю, вот это имеет какое-то значение из-за чего приложение не работает?
Re: Как подключить библиотеку asmack?
Добавлено: 12 фев 2014, 07:30
widg
раставил логи:
Код: Выделить всё
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)
Помогите, куда дальше копать?