Android Studio Gradle и NDK

Ответить
ArturSnk
Сообщения: 1
Зарегистрирован: 03 авг 2014, 06:32

Android Studio Gradle и NDK

Сообщение ArturSnk » 03 авг 2014, 06:36

Мне нужно подключить 2 библиотеки с++. Если я отключаю создание android.mk на лету (sourceSets.main.jni.srcDirs = []), то не компилируется ndk вообще. Подключить две библиотеки в один модуль тоже никак - ругается на переменные.. Ведь надо отчистить перед второй библиотекой include $(CLEAR_VARS). Как мне в gradle подключить 2 модуля? Что то вроде:

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

ndk {
            moduleName "mp3encoder"
            cFlags "-O2 -Wall -DANDROID -DSTDC_HEADERS -I./libmp3lame/"
            ldLibs "GLESv1_CM", "dl", "log"
            stl "stlport_static"
        }
ndk {
            moduleName "natmpmclient"
            cFlags "-O2 -Wall -DANDROID -DSTDC_HEADERS -I./libnatpmp/"
            ldLibs "GLESv1_CM", "dl", "log"
            stl "stlport_static"
        }
Как мне в gradle указать какие файлы относятся к одной, а какие к другой библиотеке, и как мне между ними отчисть переменные?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Android Studio Gradle и NDK

Сообщение Mikhail_dev » 03 авг 2014, 10:07

Я не знаю как в градл подключить, лишь замечу что Android Studio пока еще не умеет работать с NDK. Idea 13 умеет, к тому же есть бесплатный вариант.

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

Re: Android Studio Gradle и NDK

Сообщение altwin » 04 авг 2014, 09:49

http://habrahabr.ru/company/intel/blog/216353/

P.S. Android Studio и не надо уметь работать с NDK, она вообще по сути ни с чем не работает, всю работу выполняет gradle, а он умеет все... почти все. По сути idea - это очень гибкая в настройке среда разработки в которой при определенных навыках возможно все, а Android Studio - это форк, т.е. уже предварительно скастомизированная гуглом среда, для тех, кто просто не знает или не хочет разбираться с деталями платформы idea.
Изображение

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Android Studio Gradle и NDK

Сообщение Mikhail_dev » 04 авг 2014, 10:07

Ну как сказать. Я вот разрабатываю в Android Studio, мне пока что хватает всего, что необходимо. Мне не то что лень переходить на IDEA 13, а просто пока не вижу смысла.
Какой профит я могу получить, будучи обычным разработчиком, которому не нужны NDK и структура эклипса?

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

Re: Android Studio Gradle и NDK

Сообщение altwin » 04 авг 2014, 10:59

Mikhail_dev писал(а):Ну как сказать. Я вот разрабатываю в Android Studio, мне пока что хватает всего, что необходимо. Мне не то что лень переходить на IDEA 13, а просто пока не вижу смысла.
Какой профит я могу получить, будучи обычным разработчиком, которому не нужны NDK и структура эклипса?
Никакого, до тех пор, пока потребности не выростут. Но опять же, какова вероятность того, что наш код будут повторно использовать или расширять в open source сообществе? Но мы всеравно используем общепринятые шаблоны проэктирования, как и ООП в частности... Все просто потому, чтобы не создавать себе проблем - "а вдруг?". Если есть инструмент, который позволит покрыть "а вдруг", то зачем тратить время на что -то другое... Далеко не всегда есть возможность посмотреть на новые методики просто потому, что нет времени, а тратить его на изучение новой среды при смене задач очень не хотелось бы. idea - это швейцарский нож, в ней конфигурируется все, т.е. нет детали, которую нельзя сделать под себя...

P.S. ситуация ровно такая же с дистрибутивами linux или простыми образами VM, мы все можем использовать что -то готовое, вот только возникает необходимость пересобрать ядро или просто "выкатить" уникальный образ и начинаются проблемы просто потому, что мы используем дополнительные уровни абстракции... Я вообще сторонник gcc / javac и vim :) НУ и как бы не хочу использовать AS хотя бы потому, что возникает потребность в поддежке других ЯП, или просто не всегда доступен интернет и сборка gradle, очень не хочется, чтобы меня такие ситуации ставили в тупик... Когда какое то мелкое изменение заставляет тратить часы на установку/настройку инструментов, еще и обучение их использованию, тут явно что -то нужно менять... Ну а может я просто параноик и готовлюсь к концу света... в общем это не особо важно, главное, чтобы решалась поставленная задача.
Изображение

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Android Studio Gradle и NDK

Сообщение Mikhail_dev » 04 авг 2014, 11:15

Но мы всеравно используем общепринятые шаблоны проэктирования, как и ООП в частности... Все просто потому, чтобы не создавать себе проблем - "а вдруг?"
Это "а вдруг", если говорить про шаблоны проектирования, заставят перелопатить весь проект и потратить уйму времени, если "а вдруг" выстрелит. И это я про шаблоны. А что же на счет AS и IDEA? Каков ущерб принесёт там "а вдруг"? Как по мне, так нулевой.
НУ и как бы не хочу использовать AS хотя бы потому, что возникает потребность в поддежке других ЯП
При необходимости другого языка, что само по себе явление очень редкое, переводится на IDEA с AS в один клик.
или просто не всегда доступен интернет и сборка gradle, очень не хочется, чтобы меня такие ситуации ставили в тупик...
Не понимаю о каком интернете и градле идет речь. Градл единожды качает нужные себе либы, а дальше собирает всё локально, либо глобально, если человек держит либы в интернете. но тут ему ничто ен поможет и пролема тут не в AS, да и не в Gradle.
Когда какое то мелкое изменение заставляет тратить часы на установку/настройку инструментов, еще и обучение их использованию, тут явно что -то нужно менять...
Ты явно передергиваешь, я не вижу никаких затрат по времени для перехода. Как Idea, так и AS, обе могут использовать одну JDK, Android SDK, Gradle. Что там настраивать?

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

Re: Android Studio Gradle и NDK

Сообщение altwin » 04 авг 2014, 11:51

Mikhail_dev писал(а):
Но мы всеравно используем общепринятые шаблоны проэктирования, как и ООП в частности... Все просто потому, чтобы не создавать себе проблем - "а вдруг?"
Это "а вдруг", если говорить про шаблоны проектирования, заставят перелопатить весь проект и потратить уйму времени, если "а вдруг" выстрелит. И это я про шаблоны. А что же на счет AS и IDEA? Каков ущерб принесёт там "а вдруг"? Как по мне, так нулевой.
НУ и как бы не хочу использовать AS хотя бы потому, что возникает потребность в поддежке других ЯП
При необходимости другого языка, что само по себе явление очень редкое, переводится на IDEA с AS в один клик.
или просто не всегда доступен интернет и сборка gradle, очень не хочется, чтобы меня такие ситуации ставили в тупик...
Не понимаю о каком интернете и градле идет речь. Градл единожды качает нужные себе либы, а дальше собирает всё локально, либо глобально, если человек держит либы в интернете. но тут ему ничто ен поможет и пролема тут не в AS, да и не в Gradle.
Когда какое то мелкое изменение заставляет тратить часы на установку/настройку инструментов, еще и обучение их использованию, тут явно что -то нужно менять...
Ты явно передергиваешь, я не вижу никаких затрат по времени для перехода. Как Idea, так и AS, обе могут использовать одну JDK, Android SDK, Gradle. Что там настраивать?
1. что касается ЯП, я регулярно использую java/C/Objective-C/python/php/javascript/perl/bash.
2. По поводу ущерба - понятия не имею, поскольку AS не использую, предполагаю, что часть конфигураци действительно подтянется, но это платформа на базе "бесплатной" версии и инструментов командной разработки в ней нет, соответсвенно проблем будет много.
3. Gradle я использую версии 1.6 и поддержки офлайновой сборки в нем нет. Переходить на новый релиз я буду только когда пройдет минимум лет 5, посколько заказчикам гаррантированна поддержка текущего проекта и ниодин дурак не будет делать апгрейд не предусмотренный контрактом. gradle - в первую очередь менеджер зависимостей и нифига он не нужен в офлайновой работе, зачем я буду вообще тратить на него время?.
4. А я вижу серьезные проблемы, потому как AS - это даже интерфейс измененный, когда я работаю над проектом стоимостью несколько десятков миллионов $ я не то, что буду проверять почему кнопка не на том месте в idea, но и доки переписать для простой операции открытия проекта придется. Это минимум десятки тысяч затраты и смена среды разработки -это не мне понравилось и я перешел, а получение разрешения на его установку и использования и т.д. У меня на сегодня idea интегрированна с десятком внутренних сервисов и если при установке AS хоть что -то упадет - я просто выпаду из недельного спринта. Если проект на gradle (а в AS иначе не бывает), мне придется полностью настроить 100% идентичность сборки и не важно idea это будет или eclipse, смена среды разработки -это переписывание спецификации и стоит это довольно дорого. Если у меня банально кофигурация тестов слетит - проект не пойдет в продакшен. Более того open source AS и IDEA поддержка которой оплачивается не первый год - это принципиально разные вещи, я совсем не уверен, что "умельцы" из гугл ничего там не сломали и более того ответят на мои вопросы...

P.S. суть в том, что поддержка -важна. По поводу хранения либ - у меня не то, что либы на удаленных серверах, но и собираются они перед тем, как собирается проект(правда делаю я это не часто), они еще и на разных серверах... и чтобы проект собирался локально, мне нужно минимум 3 виртуалки подымать... Вопрос в том, что для меня не просто важна работа приложения, а в том, что к примеру 15 000 машин заказчика и в случае к примеру с университетом, несколько сотен тысяч потенциальных пользователей - это сотни минимум типов девайсов, мне не просто обеспечить работу нужно, но и собрать статистику проблем на удаленные сервера, которые будут обрабатывать/пересобирать, заменять эти библиотеки, удалять их из проекта и требовать замены подхода через саппорт и т.д. Да у меня банально не на всех машинах библиотеки шифрования заводятся, а платить за поддержку - не окупит ниодин заказчик... Как мне это все под gradle заводить еще и в дедлайн попасть не ясно вообще... В общем проблем более чем достаточно, AS -это ограниченный форк, поддерживающий продвигаемую гуглом инфраструктуру разработчика.... проблема в том, что google не думает о тех, кто решает задачи выходящие за рамки adnroid sdk.
Изображение

Ответить