Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
wrun
1 / 1 / 0
Регистрация: 07.02.2013
Сообщений: 49
#1

Использование нативных библиотек - Программирование Android

08.09.2014, 17:23. Просмотров 1753. Ответов 7
Метки нет (Все метки)

Добрый день. Решил попробовать написать приложение для личных нужд, нашел хорошее описание и уперся в проблему:

http://masl.cis.gvsu.edu/2012/01/25/android-echoprint/

Тут подключают Нативную библиотеку System.loadLibrary("echoprint-jni");

Использовать библиотеки jar я научился, но никак не могу понять в чем фишка таких библиотек и зачем всё так сложно!?

Я разрабатываю под Android Studio. А там пример под Eclipse. Можно ли в нем собрать (хоть у меня и там не получилось) или надо (как я почитал) "рядом" со своим проектом собирать?

В интернете читал про NDK но понимания не сложилось ( Подскажите кто может
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2014, 17:23     Использование нативных библиотек
Посмотрите здесь:

Использование библиотек в проекте AS - Программирование Android
Подскажите как использовать библиотеку. у меня есть некая библиотека lib.jar (внутри определенное количество file.java и file.class) ...

Использование библиотек C# для Android - Программирование Android
У меня есть библиотека, написанная на С# и отлично работающая. Чтобы переписать её на java, ещё и с android sdk, мне придётся слишком много...

проект и использование внешних библиотек - Программирование Android
привет) хочу спросить по поводу android stuudio/// для работы с pdf-файлами скачал библиотеку, закинул в проект....потом закинул пару...

Подключение внешних библиотек - Программирование Android
Доброго времени. И снова я к сообществу за помощью. Подскажите, как упаковываются исходники? например, я создал библиотеку с часто...

Подключение библиотек к проекту - Программирование Android
Привет. Я работаю с .NET (C# и С++), хочу попробовать что то поделать для Андроид. Вот такой вопрос у меня, могу ли я подключить библиотеку...

Gradle - конфликт библиотек - Программирование Android
Добрый день. Пытаюсь сделать приложение для push собщений от гугл. Добавляю зависмости в Gradle, и он начинает ругаться на ...

Установка библиотек в android-studio - Программирование Android
Всем привет,есть небольшая проблема.Нашёл один интересный урок:http://devcolibri.com/3521 . Там говорится про парсинг,я установил...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
08.09.2014, 18:24     Использование нативных библиотек #2
Эх, я уже год ищу подобную инфу...
Если в 2х словах:
NDK быстрее явы. От 2х до 10 раз. А значит и батарейка дольше держится и успеваю больше.
С++ нельзя (тяжело) взломать, получив или изменив исходники. В яве можно
Под С++ есть куча старых исходников которые лень (да и глупо) перенабирать на яве.
Работал с ними (раньше) в еклипсе и (теперь) в студии. Сложного почти ничего нет. Качается НДК с официалки. Запускается прямо из консоли. По идее этого хватит для сборки чужих "идеальных" исходников.
Если же писать с нуля... Я сам только начал приближаться к этому! Надо знать с++, а он раз в 5 (минимум) сложнее чем ява.

Добавлено через 3 минуты
А что делает ЭТА библиотека? Понял что связана с микрофоном и имеет некий сервер, но дальше не читал...
wrun
1 / 1 / 0
Регистрация: 07.02.2013
Сообщений: 49
08.09.2014, 22:31  [ТС]     Использование нативных библиотек #3
Эта либа генерирует некий хэш код песни, что бы потом можно было найти ее дубликат или название через API
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
10.09.2014, 18:30     Использование нативных библиотек #4
wrun, Так а в чём собственно проблема? Конкретезируйте вопрос.

Добавлено через 1 минуту
есть шикарная серия уроков по этой теме http://www.youtube.com/watch?v=YvCRlJToCAg
если язык позволяет можешь глянуть
wrun
1 / 1 / 0
Регистрация: 07.02.2013
Сообщений: 49
21.09.2014, 13:17  [ТС]     Использование нативных библиотек #5
maxon887, проблема в том что я не понимаю как использовать такие библиотеки.

В своём проекте я использовал некие .jar библиотеки, но с ними проще, в чем специфика .so - никак не могу понять.

Получаю вот такую ошибку при попытке использования:
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load echoprint-jni: findLibrary returned null
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
09-21 13:08:10.489  18966-18966/net.wrun.izumvk E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:2192)
            at android.view.View.performClick(View.java:2533)
            at android.view.View$PerformClick.run(View.java:9320)
            at android.os.Handler.handleCallback(Handler.java:587)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:150)
            at android.app.ActivityThread.main(ActivityThread.java:4385)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
            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:507)
            at android.view.View$1.onClick(View.java:2187)
************at android.view.View.performClick(View.java:2533)
************at android.view.View$PerformClick.run(View.java:9320)
************at android.os.Handler.handleCallback(Handler.java:587)
************at android.os.Handler.dispatchMessage(Handler.java:92)
************at android.os.Looper.loop(Looper.java:150)
************at android.app.ActivityThread.main(ActivityThread.java:4385)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:507)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
************at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ExceptionInInitializerError
            at net.wrun.izumvk.MyActivity.test(MyActivity.java:758)
            at net.wrun.izumvk.MyActivity.btnTest1Clk(MyActivity.java:283)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:507)
************at android.view.View$1.onClick(View.java:2187)
************at android.view.View.performClick(View.java:2533)
************at android.view.View$PerformClick.run(View.java:9320)
************at android.os.Handler.handleCallback(Handler.java:587)
************at android.os.Handler.dispatchMessage(Handler.java:92)
************at android.os.Looper.loop(Looper.java:150)
************at android.app.ActivityThread.main(ActivityThread.java:4385)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:507)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
************at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.UnsatisfiedLinkError: Couldn't load echoprint-jni: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:429)
            at java.lang.System.loadLibrary(System.java:554)
            at net.wrun.izumvk.Codegen.<clinit>(Codegen.java:13)
************at net.wrun.izumvk.MyActivity.test(MyActivity.java:758)
************at net.wrun.izumvk.MyActivity.btnTest1Clk(MyActivity.java:283)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:507)
************at android.view.View$1.onClick(View.java:2187)
************at android.view.View.performClick(View.java:2533)
************at android.view.View$PerformClick.run(View.java:9320)
************at android.os.Handler.handleCallback(Handler.java:587)
************at android.os.Handler.dispatchMessage(Handler.java:92)
************at android.os.Looper.loop(Looper.java:150)
************at android.app.ActivityThread.main(ActivityThread.java:4385)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:507)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
************at dalvik.system.NativeStart.main(Native Method)


Я понимаю что наверное надо сесть, и изучать всё с нуля, но со всем остальным так хорошо получилось, хотелось бы продвинуться в этом месте...
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
22.09.2014, 02:18     Использование нативных библиотек #6
Советую написать сначала простые библиотеки с нуля по примерам. Легче будет понять технологию. СО файлы бывают под разные версии процов. Их нужно компилировать. Потом нужно подключать в правильных местах с правильными именами и параметрами. Любая мелочь - и глобальная ошибка без явных обьяснений... "FATAL EXCEPTION: Could not execute method of the activity" = чой-то не так! Не смог вызвать метод - не там лежит, название не то, параметры не совпали... Или даже ошибка в сишном коде. Даже деление на ноль в си или обращение к несуществующему файлу, в яве будет смотреться именно так!
wrun
1 / 1 / 0
Регистрация: 07.02.2013
Сообщений: 49
23.09.2014, 15:15  [ТС]     Использование нативных библиотек #7
Вроде разобрался, хотя в голове всё равно не улеглось пока, но откомпилить удалось - буду двигаться дальше!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2014, 21:27     Использование нативных библиотек
Еще ссылки по теме:

Android studio версии библиотек? - Программирование Android
Недавно перекинул на мобильный телефон апк файл. Попробывал запустить, пишет &quot;ошибка анализа во время анализа произошла ошибка&quot;. Поставил...

GetSupportLoaderManager и импорт support библиотек - Программирование Android
Помогите разобраться, плз. Что-то с импортом библиотек, но что именно понять не могу. Все библиотеки, которые спрашивает на выбор -...

Подключение http библиотек в android studio - Программирование Android
Добрый день. android studio создал проект, авторизация пользователя с post запросом на сервер. Прописал подключение библиотек, при...

Доступ к картинкам подключенных библиотек из XML - Программирование Android
Всем привет. Задача такая. Я использую android.support.v7.widget.Toolbar (верхний ActionBar) В нём при открытии меню сама иконка меню...

Java Android О приложении наподобие реестра библиотек - Программирование Android
Привет всем. Помогите по сабжу. Вот есть же куча приложения, которые показывают список кинотеатров, гостинниц и т.д. Объясните на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
23.09.2014, 21:27     Использование нативных библиотек #8
Цитата Сообщение от wrun Посмотреть сообщение
Вроде разобрался, хотя в голове всё равно не улеглось пока, но откомпилить удалось - буду двигаться дальше!
Я разобрался где-то пол года назад, но далеко не продвинулся... Как Вы наверно поняли, компиляция идет ОЧЕНЬ долго! Минимум 30-40 секунд до тестов на устройстве. Иногда все 50-60. Я зашел с другой стороны... Графика мне пока не особо нужна, а если ее отключить то справится виндовая консоль для отладки. Установил MinGW и наплодил Win/NDK совместимых классов. В винде от компиляци до вывода результата проходит максимум 8-10 секунд. На простых примерах 3 секунды... Возможна "поблочная сборка"(перекомпиливаются только изменившиеся файлы). Методика формирования DLL очень похоже на структуру NDK библиотек.

Использую пока только для простой криптографии и защищенных от взлома процедур. Но очень тяжело продвигается...
Yandex
Объявления
23.09.2014, 21:27     Использование нативных библиотек
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru