【发布时间】:2014-12-20 23:24:57
【问题描述】:
我对使用 Android、Java、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?
所以,我有几个具体的问题,但如果我对任何假设有误,或者有一些您认为我可能遗漏的信息,我将非常感谢您了解!
无论如何-
“bin”文件夹:
我假设“bin”用于二进制文件......对吗?但好像不是。它包含 AndroidManifest.xml 的副本(为什么?)、其他一些文本内容、我的项目的 .apk 以及一堆我也不明白的文件夹。它还有一堆附加了“.d”的东西的副本(例如,“AndroidManifest.xml.d”)。为什么? 另外,如果我擦除这个文件夹,ndk-build 会失败。所以这里似乎有与构建相关的配置文件? (编辑:这是由于我的makefile错误-也感谢上帝。那部分真的没有意义...... ) 我想我的问题是:bin 文件夹的作用是什么? .d 文件是什么?哪些文件可以安全删除(在构建期间生成)?
'gen'、'libs'、'obj'、'res' 文件夹:
对这些正在发生的事情进行高级概述也会有所帮助。 :) 另外,这些中的哪些可以安全删除(在构建过程中自动生成)?
编辑: 在进一步的实验中,“gen”似乎可以安全地被擦除,并且会在构建过程中自动重新generated。
我认为可以安全地假设 'libs' 无法安全清除,但仍不清楚它究竟做了什么。
看起来 'obj' 也可以安全地清除 - 尽管它需要更长的构建过程,编译所有 SDL 代码等。似乎包含 SDL 的中间构建文件。
'res' 无法安全清除。仍然不知道里面有什么/它做了什么。
*.properties 文件
如果这些是自动生成的,为什么它们位于项目的根目录?我假设它们是构建过程的一些中间文件?
edit:它们都说它们是自动生成的,但似乎它们不能被删除,否则构建过程将失败。它会告诉你使用'android update-project'自动生成关于'sdk.dir'(什么?)的东西(但stackoverflow搜索告诉你使用'android update project -s -t“android-19”-p .',但是由于目标无效,这也不起作用,所以我应该输入'android list targets'来找出目标,但该列表是空的,呃。所以我只是通过git重新检查了这些文件,它再次工作。所以是的 - 仍然不知道它们是什么,它们是如何生成的,它们为什么在它们所在的位置等等......
TL;DR:
感觉整个构建基础架构非常不明确/过于复杂。我错过了哪些可能对所有这些点击有所帮助的部分?
我想如果有任何好的文档来源/解释这一切到底发生了什么,我很乐意被引导到它。我发现的大部分内容都采用“哦,你想为 android 构建一些东西?嗯,点击这里,然后这里,然后这里,然后你去!它已经建成了!”的形式,我宁愿有告诉我发生了什么以及为什么/如何。
抱歉,这篇文章有点草率 - 非常感谢您回答任何问题/指向任何进一步学习的资源!
【问题讨论】:
-
“感觉整个构建基础设施都非常不明确/过于复杂” - 确实如此,而且情况变得更糟。等到
ant出现未知/无法解释的问题。或者你想不通为什么没有将原生库复制到 APK 中,或者...
标签: java build android-ndk sdl