Войти
ФлеймФорумПрограммирование

На чём писать под Андроид?

Страницы: 1 2 337 38 Следующая »
#0
10:51, 9 апр. 2012

Вот все говорят, что типа надо писать на жабе. А я никогда не писал на песочных языках, я не знаю, как на ней вообще писать, потому что я привык к коренным языкам, я привык, что если мне понадобится какая-нибудь фигня типа "сделать что-то со всем пикселами картинки", то я смогу это сделать наиболее оптимальным образом (да-да, обротившесь к памети нопремую). А на жабе так можно разве, без тормозных SetPixel/GetPixel? Я слышал, можно какой-то С++ NDK подключить.

В общем посоветуйсе среду и компилятор, чтобы можно было кулхацкерить, бесплатную и без длинной инструкции на английском в стиле "скачайте это, потом вот то, этим при помощи того соберите вот то, потом скачайте ещё то, установите такие-то ключи, поставьте такой-то патч и теперь сделайте вот то".

На всякий случай перенёс сюда сообщение A=L=X с 4 страницы, чтоб не потерялось

А, ясно, расскажу тогда что сделал я чтобы упростить тебе поиск.
Ну Eclipse + Android SDK у меня уже стоял. Что собственно я сделал чтобы приобщится к NDK.
Первое - скорее всего нужно еще поставить плагин к Eclipse - CDT - C Development Tools. Штука нужна чисто для того чтобы эклипс понимал синтаксис С++ и не ругался почём зря, на самом деле для компиляции CDT не нужен, NDK сам в себе содержит всё что нужно. Так вот CDT у меня уже стоял, ну а ты установишь через меню где About - Install Software.

На всякий случай на этапе года Eclipse + Android SDK встали вроде бы рекомендую сделать проект выбрав в диалоге создания проектов ветку "Android Sample" - это значит создать проект на базе исходников лежащих в Android SDK в папке Samples - практически любое выбираешь и тупо пробуешь компилировать. Если всё скомпилится и в одной из подпапок проекта появится *.apk файл значит можно идти дальше.

Далее качаем NDK с сайта гугла и просто распаковываем его в папку.
Далее по инструкции которую ты сам приводил по ссылке ставим в Eclipse еще один плагин "секвойя для NDK" - опять таки есть в той ссылке что ты приводил. После этого найдо зайти в Window->Preferenced->Android->Native support и прописать путь до NDK.

И вот тут для меня был маленький облом - в эклипсе не появилось в диалоге создания проекта пункта "Andoid NDK sample" - а ведь папка Samples с уже готовыми решениями там есть - поэтому пришлось поработать ручками.
1. Создаём пустой проект без активити.
2. Жмыкаем на проекте правую кнопку "Android... -> Add native support".
И вот тут я сделал следующее. Тебе же хотелось над битмапами поколдовать. Так вот в NDK/Samples лежит довольно милый пример native-plasma - прямо то что нужно.
Я аккуратненько перенес из него файлы в новообразованный проект. Сразу зачему что тот *.java файл который лежит в папке src можно смело стереть. Но вообще там ОБЯЗАН лежать файл с пустым классом иначе не будет компилить. Но факт его существования никому не интересен и его лучше сделать пустым:

class Dummy
{
}

С остальными файлами проблем нет, кроме AndroidManifest.xml - вот его уже надо переносить аккуратненько, сливая блоки по смыслу. У меня он стал выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.native_plasma"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application android:label="@string/app_name"
                 android:hasCode="false" android:debuggable="true" android:icon="@drawable/ic_launcher">
        <activity android:name="android.app.NativeActivity"
                  android:label="@string/app_name">
            <meta-data android:name="android.app.lib_name"
                    android:value="native-plasma" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


насколько я понял главное не поломать строчку android:name="android.app.NativeActivity".
И вот тут попробовав скомпилить я словил ошибку что мол пипец у вас не стоит bash.
Огосподи, баш то тут причем? Но всё решилось довольно бескровно - заходим в настройки проекта, выбираем пункт "С++ build" и видим что ненавистный баш прописан именно как строка билда. Внимательно приглядевшись к тому что там происходит решение приходит быстро - в эту строчку надо прописать:
путь_до_NDK\ndk-build.cmd
И всё! Строим проект, запускаем его, убеждаемся что в подпапке появился *.apk, а это значит что всё пучком.
Единственное - в эклипсе не забывать сохранять постоянно файлы если их из него меняли ибо запуская билд он сам этого не делает и работает еще со старыми файлами на диске. И я иногда нажимал на проекте правую кнопку Android -> fix project properties, и возникло ощущение что это иногда помогало после ручного изменения файлов на диске, но может померещилось.
Так же заметь что Eclipse как я понял не строит *.apk по команде build а только компилит исходники. *.apk же он из скомпиленного собирает по команде Run, тоже особенность.

#1
10:55, 9 апр. 2012

TarasB
> и без длинной инструкции на английском в стиле "скачайте это, потом вот то,
> этим при помощи того соберите вот то, потом скачайте ещё то, установите
> такие-то ключи, поставьте такой-то патч и теперь сделайте вот то".

YOU SHALL NOT PASS!!!

А если серьезно - в этом смысле действительно всё плохо - даже чтобы Android SDK качнуть и настроить - придётся не раз поматюкаться. А уж NDK это плюс к тому.
Вообще джава там суть как ни странно нативна для установки и разработки и вот чтобы NDK припахать как раз нужно изощерятся.

Я вообще задумчиво курил манулы и настройки где то день прежде чем осмысленный хелло-ворлд получился и вообще вектор понимания выработался. В NDK не совался.

P.S.

Сам научился устанавливать и лабать на Эклипсе + плугин к Android SDK. И надо сказать что без гемора и глюков - ну никак. У меня в частности эмуль андроида как выбивал с ошибкой при попытке запустить отладку из под IDE "с нуля" - так и выбивает. Но помогает запустить его отдельно и держать включеным. Тогда нормально. В принципе так и надо, ибо процесс запуска у него мягко говоря длителен и лучше держать всё время запущенным.

#2
10:56, 9 апр. 2012

Как написать программу на C++ для Android. Часть 4: Без Java.

#3
11:01, 9 апр. 2012

Ах да.
Под винду.
Чтобы среда была под виндой.

Я бы был бы не против даже установить линукс на свой комп ради такого, но некуда.
Да и на линуксе же уже Андроид-ФПЦ даже говорят есть.

#4
11:06, 9 апр. 2012

По идее, всё отличие с Linux вариантом, - то что придётся вручную скачать и установить Eclipse. Остальное устанавливается практически 1 в 1

#5
11:12, 9 апр. 2012

0iStalker
> По идее, всё отличие с Linux вариантом, - то что придётся вручную скачать и
> установить Eclipse. Остальное устанавливается практически 1 в 1

То есть надо поставить Win-Eclipse, потом сделать, как по ссылке ASD, потом уже можно писать? Насколько надо будет АПИ учить?

#6
11:18, 9 апр. 2012

TarasB
> Насколько надо будет АПИ учить?

Если честно, то дальше пары хелловордов на Java я не ушел. Но по идее, - больше придётся учить OpenGL ES, c шейдорным адом, чем API самого андройда, - тут-то как раз на всех платформах всё более-менее одинаково.

#7
11:39, 9 апр. 2012

0iStalker
> Но по идее, - больше придётся учить OpenGL ES, c шейдорным адом

А если мне уровня ГДИ достаточно? CreateDIBSection, ручное ковыряние с пикселами напрямую, BitBlt.

#8
11:40, 9 апр. 2012

> То есть надо поставить Win-Eclipse, потом сделать, как по ссылке ASD, потом уже можно писать? Насколько надо будет АПИ учить?
TarasB, озадачился тем же самым вопросом несколько дней назад - за 1 вечер дошёл от твоего текущего состояния до состония наличия готовой проги с простейшей 3д-графой и её работы под управлением гиро-сенсора.

В общем, если есть нормальный опыт программинга - больше 1 вечера тебе не потребуется точно.

> Если честно, то дальше пары хелловордов на Java я не ушел.
0iStalker, на примитивном уровне, которого вполне хватит для написания первых игр/приложений - ява практически ничем от плюсов не отличается. Т.е. если ты можешь писать на плюсах - значит и на яве писать сможешь без малейших проблем. Обратное не верно 8-)

> больше придётся учить OpenGL ES, c шейдорным адом
Если до этого был опыт работы с шейдерами (под ДХ или ОГЛ - не важно) - займёт это изучение примерно от 3 минут до часа времени )))

> А если мне уровня ГДИ достаточно? CreateDIBSection, ручное ковыряние с пикселами напрямую, BitBlt.
TarasB, это тебе не на дельфи писать для 80486 )))

#9
11:47, 9 апр. 2012

TarasB
> А если мне уровня ГДИ достаточно? CreateDIBSection, ручное ковыряние с
> пикселами напрямую, BitBlt.

Я уже писал что у меня где то день ушел на ковыряние в мануалах чтобы немного врубится в модель программирования в андроид и налабать хелоу-ворлд с мощным внедренческим вызовом всплывающего окошка показывающего текущую дату и время. =)))
Вообще конечно вникнуть придется и пожалуй больше суток.

Но хороший стартап есть - в демках есть замечательная демка API Demos - в неё сконцентрирована туева хуча всего всего, включая, например Graphics::BitmapPixels, наверняка что тебе надо только на яве. Надо искать такое же по смыслу но на NDK.

#10
11:48, 9 апр. 2012

slava_mib
+1

Тоже начинал собирать с НДК, но понял - С++ это костыли в Анроиде. Ява так ява.

До того дня - я тоже дальше Хелло Ворлд не писал. Нарыл простейшее приложение (наверняка его все видели - инициализация ОГЛ, работа с тач-скрином, и т.д.) За вечер понял что и как. За два дня написал загрузчик моделей. За неделю (это благодаря ОГЛУ) - фри-лук камеру (после ДХ, сложно в голове понимать что там две матрицы слиты в одну и никого это не волнует).

Вообщем я делаю так :
Две папки - два проекта - в одной на Яве под Эклипс, в другой - точная копия программы - С++ и ОГЛ.
Что-то пишу под плюсы, как только фишка отлажена - просто копипаст в Еклипс.
Профит хороший.

#11
12:29, 9 апр. 2012

TarasB
> Ах да.
> Под винду.
> Чтобы среда была под виндой.

можно аналогично все настроить под виндой

#12
12:59, 9 апр. 2012

У меня, кстати, родился оффтопный вопрос - как известно NDK в андрюшах появился начиная с версии то ли 2.2 то ли 2.3.
Вопрос ребром: а как жил на андрюше до того тот же скайп, например? Не верится что он видео декодировал налету в яве.

#13
13:09, 9 апр. 2012

fzr125
> Тоже начинал собирать с НДК, но понял - С++ это костыли в Анроиде. Ява так ява.
гораздо удобнее чем на java, если есть уже приличная кодобаза на с++.
> Две папки - два проекта - в одной на Яве под Эклипс, в другой - точная копия
> программы - С++ и ОГЛ.
> Что-то пишу под плюсы, как только фишка отлажена - просто копипаст в Еклипс.
у меня два проекта, один на java тупо активити и проброс сообщений с клавы/точпада в натив второй проект с++ реф папки jni, автоматом собирается библиотека, выводится компаил лог и т.д. телодвижений лишних никаких. В нативе только отладка не так удобна, впрочем и без натива она также через жопу в эклипсе сделана.
Настроить для это проект можно примерно след. образом:

+ Показать

в Refresh (specific resources) указываем папку libs нашего проекта, в Build options папку jni.

#14
13:11, 9 апр. 2012

TarasB
Попробуй Marmalade SDK. C++ Visual Studio.
Лучше этого под мобильные платформы я пока ничего не юзал.
ИМХО родные СДК кажутся костылями на фоне Мармелада.

Страницы: 1 2 337 38 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.