2014-12-20 24 views
2

Я относительно новичок в создании материалов с Android, Java, NDK и SDL. Но я работаю в примерном проекте, который я строю, и есть много чего, что я нахожу очень запутанным.Обновление инфраструктуры инфраструктуры NDK (с SDL)

Вот распечатка моего файла структурообразующих для справки:

MyProj 
-android-project  //I created this to dump android-specific junk into 
--src     //java source files 
--jni     //"java native interface" - c/c++ source files 
--AndroidManifest.xml //packaged with .apk to inform OS of various details of app 
--bin     //binary files? 
---AndroidManifest.xml //Copy of AndroidManifest.xml in above dir? 
---AndroidManifest.xml.d 
---SDLActivity-debug-unaligned.apk 
---SDLActivity-debug-unaligned.apk.d 
---SDLActivity-debug.apk 
---SDLActivity.ap_ 
---SDLActivity.ap_.d 
---build.prop 
---classes 
---classes.dex 
---classes.dex.d 
---dexedLibs 
---proguard.txt 
---res 
---rsLibs 
---rsObj 
--gen     //no idea 
--libs    //no idea 
--obj     //no idea 
--res     //no idea 
--build.xml   //points to files regarding build config 
--default.properties //auto-generated? 
--local.properties //auto-generated? 
--project.properties //auto-generated? 

Итак, у меня есть несколько конкретных вопросов, но если я ошибаюсь, о каких-либо предположений или есть пикантная из информации, что вы думаете, я может быть, отсутствует. Я бы очень хотел услышать об этом!

Anyways-

'бин' Папка:

Я бы предположить, "БИН" для бинарных файлов ... не так ли? Но похоже, что это не так. Он содержит копию AndroidManifest.xml (почему?), Пару других текстовых вещей, файл .apk моего проекта и кучу папок, которые я также не понимаю. У него также есть куча копий вещей с добавлением «.d» (например, AndroidManifest.xml.d). Зачем? Кроме того, если я протрите эту папку, ndk-build завершится с ошибкой. Похоже, что здесь есть файлы конфигурации для сборки. (редактирование: это было из-за ошибочного make-файла с моей стороны.) Слава богу тоже. Эта часть ДЕЙСТВИТЕЛЬНО не имела смысла ...) Я думаю, мои вопросы таковы: Какова роль папки bin? Какие файлы .d? Какие файлы можно безопасно удалить (получить сгенерированные во время сборки)?

'поколения', 'LIBS', 'OBJ', папки 'Res':

высокоуровневый обзор того, что происходит с этим было бы полезно, как хорошо. :) Кроме того, что из них безопасно для удаления (автоматически генерируется во время сборки)?

редактировать: при дальнейших экспериментов, оказывается «ген» можно смело протирать и получите автоматический повторно ген создававшие в процессе сборки.

Я думаю, что безопасно считать, что «libs» нельзя безопасно очистить, но все еще нечеткое, что именно оно делает.

выглядит так: «obj» МОЖЕТ также безопасно очищаться, хотя для этого потребуется более длительный процесс сборки, скомпилировав весь код SDL и т. Д. Появляется, чтобы содержать промежуточные файлы сборки для SDL.

'res' НЕ МОЖЕТ быть безопасно очищен. до сих пор не знаю, что в нем/что он делает.

The * .properties файлы

Если это автоматически генерируется, почему они в корне проекта? Я предполагаю, что это промежуточный файл процесса сборки?

редактировать: все они говорят они автоматически генерируется, но кажется, что они не могут быть удалены, иначе процесс сборки не удастся. Он скажет вам автоматически генерировать информацию о «sdk.dir» (что?), Используя «проект обновления android» (но поиск в stackoverflow говорит вам использовать «проект андроидного обновления -s -t» android-19 »-p ,', но это не будет работать из-за недопустимой цели, поэтому я должен ввести «цели списка Android», чтобы узнать цели, но этот список пуст и ughhh. поэтому я просто проверил эти файлы через git, и он снова работает. так yeah- до сих пор не знаю, что они, как они генерируются, почему они находятся там, где они есть, и т.д ...

TL; DR:

Он не чувствует, как вся эта сборка инфраструктуры абсурдно неясным/сложным. Какие штуки мне не хватает, что может помочь всем этим нажмите?

Я думаю, если есть какие-либо хорошие источники документации/объяснения того, что происходит со всем этим, я бы хотел, чтобы к нему обратились. Большая часть материала, который я нашел, принимает форму «о, вы хотите что-то создать для андроида?» Ну, нажмите здесь, затем здесь, затем здесь, и там вы идете! Он построен! », Где я бы предпочел что-то, что говорит мне, что происходит и почему/как.

Извините, это сообщение немного rambly- ответы на любые вопросы/указатели на любые ресурсы для дальнейшего обучения были бы очень признательны!

+1

* «Похоже, что вся эта инфраструктура построения абсурдно неясна/сложна» * - это так, и все ухудшается. Подождите, пока вы не увидите неизвестные/необъяснимые проблемы с 'ant'. Или вы не можете понять, почему родная библиотека не копируется в APK, или ... – jww

ответ

1

Да, это беспорядок. Это грязно, потому что это единственное дерево каталогов охватывает все потребности организации проекта IDE, кросс-компиляции и упаковки, и никто в Android не думал, что важно сохранить его в чистоте.

Если есть дополнительные копии вашего AndroidManifest.xml, игнорируйте их. Они должны просто быть частью процесса упаковки.

Вспомните bin как свой выходной каталог, а не просто для двоичных файлов. Единственное, что вам действительно волнует, - это apk.

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

gen генерируется как часть процесса сборки. Безопасно удалять, но вам обычно не нужно это делать.

libs - это локальные библиотеки, которые необходимы для связи с вашим приложением. Бывают случаи, когда вы бросаете Java-банку там, которую хотите использовать.

obj предназначен для файлов объектов, созданных компилятором. Они необходимы компоновщику для создания собственных двоичных файлов вашего приложения. Безопасно удалить их и перезапустить компилятор, но это полная перекомпиляция, которую вы делаете.

res предназначен для файлов ресурсов приложения. Некоторые из них требуются Android, и вы можете добавить туда больше файлов, которые будут использоваться в вашем Java-коде.

Если вы используете SDL 2.0, вы также должны иметь каталог assets, в котором хранятся файлы данных, с которыми ссылается ваш собственный код.

Он говорит, что некоторые из файлов сборки генерируются автоматически ... но ваша сборка не является тем, что их генерирует.

Я использую Eclipse (нехотя) строить свои приложения для Android, но вы также можете использовать ant, ndk-build и adb делать все те же вещи в командной строке.

Смежные вопросы