Андроид C родное развитие – берет полный контроль!
Radu Motisan Отправленный 12-ого мая 2009
Недавний проект я продолжал работать требуемый Bluetooth, программирующий на Андроиде.
Имея быстрый взгляд по последним 1.5 Андроидам SDK, я мог видеть, что поддержка bluetooth отсутствовала. Более позднее исследование указало, что Google выразительно исключил нехватку обвинения ПЧЕЛЫ Bluetooth времени.
С другой стороны, я не большой Явский поклонник, чтобы сказать наименее. Я нахожу Яву недружелюбной, и мне не нравятся взгляд и чувство Явских приложений. Жаль, я предпочитаю C/C ++, так как он обеспечивает лучший контроль и гибкость. Таким образом пришло время начинать делать C/C ++ родные заявления для Андроида Google. Sorry, I prefer C/C++ since it provides better control and flexibility. So it's time to start doing C/C++ native applications for the Google Android.
Как управляемый программа C на Андроиде Google?
Первая вещь, которую я покажу здесь, должен собрать простую программу C для Андроида.
![]() |
|
Сохраните эту программу как test.c. В следующих шагах мы будем собирать этот образец для Андроида Google, используя gcc.
Инструменты
1. Загрузите ubuntu linux. Я в настоящее время использую Настольный выпуск 9.04 в действительной машине. I currently use Desktop edition 9.04 in a virtual machine.
Внимание: Вы должны будете установить Ubuntu на машине по крайней мере с 1.5 Домкратами Великобритании, 10 Великобритании ext2 разделение и 2 разделения Обмена Великобритании, или Вы не будете в состоянии использовать информацию этой обучающей программы (менее тогда, минимальные требования приведут к невозможности компилирования Кодекса Андроида, и мы нуждаемся в этом для библиотек).
2. Как только Ubuntu установлен, загрузить Исходный текст Андроида. На Вашем linux коробка устанавливают дополнительные пакеты: On your linux box install additional packages:
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
$ sudo apt-get install valgrind
Этот только для Бесстрашных пользователей Ubuntu:
$ sudo apt-get install lib32readline5-dev
3. Установите Repo
Создайте ~ / справочник мусорного ведра в Вашем домашнем каталоге, и проверка, чтобы убедиться, что этот справочник мусорного ведра находится в Вашем пути:
$ cd ~
$ mkdir bin
$ echo $PATH
Чтобы добавить это к Пути, Вы можете использовать:
$ PATH=$PATH:~/bin/
Загрузите repo подлинник и удостоверьтесь, что это выполнимо:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
4. Калибрование клиента Repo
Создайте пустой справочник, чтобы держать Ваши рабочие файлы:
$ mkdir mydroid
$ cd mydroid
repo, которым управляют, init, чтобы снизить последнюю версию Repo со всеми ее новыми затруднительными положениями ошибки. Вы должны определить URL для декларации:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
Когда вызвано, формируйте Repo со своим реальным названием и адресом электронной почты. Если Вы планируете представить кодекс, используйте адрес электронной почты, который связан со счетом Google.
Успешная инициализация закончит сообщением такой как
repo initialized in /mydroid
Ваш справочник клиента должен теперь содержать.repo справочник, где файлы, такие как декларация будут сохранены.
5. Получение файлов
Сбрасывать файлы к Вашему рабочему справочнику от складов как определено в декларации по умолчанию, которой управляют
$ repo sync
Для больше о синхронизации repo и других командах Репо, см. Используя Репо и Мерзавца.
Исходные файлы Андроида будут расположены в Вашем рабочем справочнике под их названиями проекта.
6. Подтверждение Признаков Мерзавца
Загрузите следующий открытый ключ в свою ключевую базу данных GnuPG. Ключ используется, чтобы подписать аннотируемые признаки, которые представляют выпуски.
$ gpg --import
тогда приклейте ключ (и) ниже, и Контроль-D за прессой, чтобы закончить вход и обработать ключи.
key 9AB10E78: "The Android Open Source Project <initial-contribution@android.com>"
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5OY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5 +
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM =
=Wi5D
-----ЗАКОНЧИТЕ БЛОК ОТКРЫТОГО КЛЮЧА PGP------END PGP PUBLIC KEY BLOCK-----
После импортирования ключей Вы можете проверить любой признак с
$ git tag -v tagname
7. Построение кодекса
Кодекс Андроида содержит ошибку, которая не была решена до даты этой статьи.
Так, прежде, чем Вы начнете собирать кодекс, Вы будете нуждаться в нескольких модификациях, или строить потерпит неудачу (после потребления части Вашего времени и терпения). Ошибка:
external/qemu/sockets.c: In function 'sock_address_init_resolve':
external/qemu/sockets.c:637: error: 'EAI_NODATA' undeclared (first use
in this function)
external/qemu/sockets.c:637: error: (Each undeclared identifier is
reported only once
external/qemu/sockets.c:637: error: for each function it appears in.)
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/
sockets.o] Error 1
Установить это, прежде, чем собрать кодекс андроида, открытый ~/mydroid/external/qemu/sockets.c и добавлять
#define __USE_GNU
как раз перед #include <netdb.h>
Теперь Вы можете построить файлы. Управляемый делают изнутри Вашего рабочего справочника:
$ cd ~/mydroid
$ make
На моей действительной машине, бегущей ubuntu, процесс сборки занял несколько часов. PC хозяина 2.6GHz P4.
Соберите test.c с gcc для платформы Андроида
Андроид использует упрощенную версию libc, названного бионическим. Мы должны собрать предварительно построенный кросскомпилятор Андроида использования arm-eabi-gcc, и использовать бионическую библиотеку по телефону.
Легкий способ сделать это должно использовать agcc perl обертка. Вы можете загрузить оригинальный файл здесь, и изменить
my $TOOLCHAIN = "$DROID/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1";
к
my $TOOLCHAIN = "$DROID/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1";
Или загрузите эту обновленную версию непосредственно.
Скопируйте agcc к своему домашнему каталогу, и chmod это:
chmod +x agcc
тогда установите ПУТЬ к бионическому, освобождает и agcc местоположение:
$ PATH=$PATH:~/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin:~/:~/mydroid/
Теперь Вы можете собрать test.c файл:
agcc test.c -o test
Возьмите получающийся испытательный набор из двух предметов и загрузите его к своему использованию андроида:
adb push test /data/local/test
Тогда пробег это:
adb shell
chmod 775 test
./test
См. рис. для большего количества деталей:
![]() |
![]() |
![]() |
Следующая вещь, которая сделает, должна попытаться управлять bluetooth функциональными возможностями, используя кодекс уроженца К и андроид toolchain.
Больше на приложениях уроженца К для Андроида здесь.
Часть этой статьи содержит информацию, представленную Google на http://source.android.com/download
Наилучшие пожелания,
Radu Motisan











24-ого мая 2009 в 18:48
Большой. Спасибо за инструкции.
Какая-нибудь идея, как запускают Вашу программу C, когда система загружает, или после того, как это загружает?
8-ого июня 2009 в 10:59
Привет
когда я управляю следованием моего Ubuntu 9.04:
$ склонные sudo - добираются, устанавливают lib32readline5-dev
Я получаю следующую ошибку:
E: Не мог найти пакет lib32readline5-dev
как сделал решение u это?
8-ого июня 2009 в 11:01
Это только для ubuntu бесстрашных пользователей.
Вы не будете нуждаться в этом в 9.04 рабочих столах.
Я изменил почту, чтобы отразить это также.
11-ого июня 2009 в 10:28
Привет,
Спасибо за инструкции.
Только небольшая модификация, Вы должны изменить agcc, поскольку toolchain не правильный libgcc.a, не находится больше в, взаимодействуют папка, таким образом 2 линии должны быть изменены также.
"$TOOLCHAIN/lib/gcc/arm-eabi/4,3,1/libgcc.a", на линии 117 и 132
Спасибо
17-ого июня 2009 в 8:48
Большой. работы как очарование.
@Dorian: спасибо за исправление.
2-ого сентября 2009 в 10:15
Привет,
У меня есть окружающая среда для построения кодекса C для андроида 1.0 в ubuntu машине. Теперь я загрузил Андроид 1.5 SDK для linux и хочу собрать тот же самый кодекс C для Андроида 1.5. Что изменяется, я должен сделать? What changes I have to make ?
15-ого октября 2009 в 23:58
Привет,
Я использую андроид X86 (взятый 10 октября ‘09).
Я добираюсь: adb: не найденный not found
Тогда. Я установил законченный system.img, скопированный явный *hello в
/system/bin и данные/, тогда я имею, строят международную организацию по стандартизации и загружают это.tem/bin and data/, then I’ve build the iso and boot it up.
Я могу видеть мой привет, но.
#. / привет
привет: не найденный
#hello
привет: не найденный
#adb
adb, не найденный
Раковина является немой или.
16-ого октября 2009 в 20:50
привет marius,
что производит, делают Вы добираетесь от ls-l
?
также, что делает Вы подразумеваете, "тогда я имею, строят международную организацию по стандартизации и загружают это.”
27-ого октября 2009 в 2:24
[...] 相關資料: Link1、Link2、Link3 [...]
14-ого декабря 2009 в 10:38
Я сделал точно то же самое как упомянуто здесь, но продолжаю получать следующую ошибку:
“/mydroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: В функции '_start':
bionic/libc/arch-arm/bionic/crtbegin_dynamic. S: (. text+0×14): неопределенная ссылка на 'главный'(.text+0×14): undefined reference to `main’
collect2: ld возвратил 1 выходной статус”
Какая-нибудь идея, как решить это?
Заранее большое спасибо.
14-ого декабря 2009 в 23:51
Удостоверьтесь, что Вы поместили следующие папки в путь:
$DROID/prebuilt/linux-x86/toolchain/arm-eabi-4,2,1
$DROID/prebuilt/linux-x86/toolchain/arm-eabi-4,3,1
15-ого декабря 2009 в 5:34
Обе папки находятся в пути, но я все еще получаю ту же самую ошибку. Это работало хорошо несколько месяцев назад, но теперь когда я попробовал еще раз, я получаю вышеупомянутую ошибку.
19-ого февраля 2010 в 21:12
Эй, это действительно велико! Только проверенный это и это работали … теперь, я могу держать весь свой древний C в строевой стойке programms к андроиду lol
20-ого февраля 2010 в 1:20
Эй там Tayefeh, забавный, чтобы видеть это не так ли?
Правда - Вы, может сделать воспаленные очень сильные приложения, используя JNI.
Я осуществил полный bluetooth l2cap интерфейс для Явы, используя это. Отправит более скоро.
16-ого марта 2010 в 9:49
Мне нравится идея, прохладная!
30-ого марта 2010 в 0:38
Очень хорошее объяснение! Вы экономили мое время. Все в одном решении для места! Спасибо! All in one place solution! Thanks!
30-ого марта 2010 в 11:53
Я рад, что Вам нравится это. Удостоверьтесь, что Вы читаете о JNI также: это обеспечивает еще некоторые варианты. it provides some more options.
31-ого марта 2010 в 17:36
Еще одна вещь – я пытаюсь управлять образцом ‘привет мировая’ программа, используя.cpp файл вместо.c файла. Компилятор жалуется на не обнаружение iostream.h. Вы могли сказать мне, как использовать Ваш подлинник, чтобы назвать c ++ файлом? Could you tell me how to use your script to call a c++ file?
20-ого апреля 2010 в 14:28
Спасибо за то, чтобы занимать время, чтобы предоставить эту информацию
Это является самым полезным
20-ого апреля 2010 в 15:10
Пожалуйста, a.
21-ого апреля 2010 в 22:52
Вы можете написать, что тот же самый agcc подлинник для миллиона команд в секунду базировал систему?
21-ого апреля 2010 в 22:54
Я могу спросить, какие аппаратные средства андроида МИЛЛИОНА КОМАНД В СЕКУНДУ Вы имеете?
21-ого апреля 2010 в 22:56
У меня есть МИЛЛИОН КОМАНД В СЕКУНДУ Мальтийское правление с MIPSr2
21-ого апреля 2010 в 23:14
У меня уже есть андроид, бегущий на этом, но мое 3-ье партийное программное обеспечение, которое вообще используется в glic окружающей среде, не будет работать в бионическом базирующемся андроиде. Таким образом я задавался вопросом, может мы делать такую обертку для базируемых систем миллиона команд в секунду.
-Kaushik
2-ого мая 2010 в 15:12
Может, t установить дополнительные пакеты андроида в ubuntu 10.4
17-ого мая 2010 в 23:16
Привет Radu! Хороший гид, но у меня есть проблема с agcc компилятором:
~$ agcc helloword.c-o helloword
arm-eabi-gcc:/home/tanisdlj/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a: Никакой такой файл или папка No such file or directory
Это - мой ПУТЬ:
tanisdlj@tanisdlj-andev $:~ повторяет $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/tanisdlj/bin/:/home/tanisdlj/mydroid/prebuilt/li nux-x86/toolchain/arm-eabi-4.3.1/bin:/home/tanisdlj/:/home/tanisdlj/mydroid//local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/tanisdlj/bin/:/home/tanisdlj/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin:/home/tanisdlj/:/home/tanisdlj/mydroid/
Я следую за Вашим гидом шаг за шагом, но у меня есть эта проблема. Какое-нибудь предложение?>. < >.<
19-ого мая 2010 в 11:19
Привет Radu
Я следовал за всеми шагами и в заключительном шаге
agcc hello.c-o привет я получаю эту ошибку
/localhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld:/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Переселения в родовом ЭЛЬФЕ (ИХ:
alhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld: /localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Relocations in generic ELF (EM:
alhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld: /localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Relocations in generic ELF (EM:
/localhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld:/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Переселения в родовом ЭЛЬФЕ (ИХ:
/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: не мог прочитать символы: Файл в неправильном форматеalhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: could not read symbols: File in wrong format
collect2: ld возвратил 1 выходной статус
Я установил ПУТЬ слишком правильно. Любезно пожалуйста помогите мне.
19-ого мая 2010 в 11:20
/localhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld:/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Переселения в родовом ЭЛЬФЕ (ИХ: 8)alhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld: /localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Relocations in generic ELF (EM: 8 )
/localhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld:/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Переселения в родовом ЭЛЬФЕ (ИХ: 8)alhome/user/bin/mipsandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/../lib/gcc/arm-eabi/4.3.1/../../../../arm-eabi/bin/ld: /localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: Relocations in generic ELF (EM: 8 )
/localhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: не мог прочитать символы: Файл в неправильном форматеalhome/user/bin/mipsandroid/out/target/product/generic/obj/lib/crtbegin_dynamic.o: could not read symbols: File in wrong format
collect2: ld возвратил 1 выходной статус
20-ого мая 2010 в 14:34
сэбин
Я устанавливал в ubuntu 10.04, и теперь я могу собрать c файлы для пончика андроида 1.6
если Вы хотите, я могу объяснить
21-ого мая 2010 в 0:49
Я собирал test.c для и бежал на раковине adb, но как бежать по моему телефону андроида? (DSTL1)
21-ого мая 2010 в 23:03
привет, пожалуйста сделайте, я думаю, что это поможет сообществу.
21-ого мая 2010 в 23:04
mavci, Вы можете использовать предельное заявление для андроида.
21-ого мая 2010 в 23:30
спасибо Radu!
Завтра я напишу весь explainations.
23-ьего мая 2010 в 14:36
Хорошо, тогда я могу добавить их к этой почте, таким образом другие могут использовать ее также.
26-ого мая 2010 в 23:17
это - так наркотик. Я могу собрать все виды программ пульта теперь!
Пижон, Вы качаетесь!
26-ого мая 2010 в 23:19
@Tanis: Вы запутавшийся Ваши версии EABI в Вашем ПУТИ; есть ссылки на 4.2.1 и 4.3.1 there are references to 4.2.1 and 4.3.1
28-ого мая 2010 в 8:47
рад Вам нравится это, Куинси.
8-ого июня 2010 в 22:43
Может казаться, не заставляет gpg - секция импорта работать. Как точно Вы приклеиваете ключ в?
15-ого июня 2010 в 14:19
Эта обучающая программа прохладна, но у меня есть проблемы, когда я пытаюсь собрать статический
когда я добавляю - статическая директива, я получаю ошибку: “не может найти-lc” “collect2: ld возвратил 1 выходной статус” ld returned 1 exit status”
Вы знаете, как решить эту проблему? Спасибо
отношения
1-ого июля 2010 в 23:50
Gcc 4.3 требуется для построения андроида. 4.4 имеет строгий, имеет более строгие правила, таким образом это будет через fprintf declaraion ошибки...
Установить,
$ склонные sudo - добираются, устанавливают gcc-4.3 г ++-4.3
$ комната sudo/usr/bin gcc
$ комната sudo/usr/bin г ++
$ sudo ln-s gcc-4.3 gcc
$ sudo ln-s г ++-4.3 г ++
2-ого июля 2010 в 10:28
Привет Anup, спасибо за Ваш вклад!
7-ого июля 2010 в 21:35
Я нисколько не технический человек, таким образом когда дело доходит до понимания кодекса, это чувствует себя чуждым мне. Однако, от того, что я прочитал, Вы нашли способ включать функциональные возможности bluetooth с C ++? Это фактически отчасти спокойно по моему мнению. Если у Вас нет bluetooth, Вы делаете его непосредственно. That’s actually kind of cool in my opinion. If you don’t have bluetooth, you make it yourself.
28-ого июля 2010 в 22:51
[...] Андроид C родное развитие – берет полный контроль! [...]