转自:
为遵义等地区用户提供了全套网页设计制作服务,及遵义网站建设行业解决方案。主营业务为成都网站建设、网站建设、遵义网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
本文针对android studio工具下的ndk开发。
build目录就是项目模块构建过程和结果使用到的位置。
项目根目录下有一个build目录。
项目根目录下各模块子目录下各自有一个build目录。
build目录下一般由4个子目录组成:
generated由aapt工具根据资源数据自动生成的java类
intermediates中间过程
outputs输出结果
tmp编译日志
根目录下的build目录,这个build服务于整个项目,在本文中称其做项目build,以区分模块build。
项目build一般只有generated和intermediates两个子目录,用于生成这个项目的buildTools。
generated目录会生成一个mockable-android-${buildToolsVersion}.jar。
intermediates目录根据需要生成dex-cache,这个目录下的xml文件配置jar包在编译过程中如何缓冲使用。
模块build目录在make module ${MOD_NAME}后就会生成4个子目录。
我们来看intermediates目录,中间生成和编译过程使用到的目录。
这个目录下有这么几个比较关心的子目录:
binaries NDK,生成c++连接库
bundles 模块链接到的自定义jar包和各abi版本的c++链接库都捆绑在这里
classes模块中生成的自定义java类
exploded-aar 由aar包解压出来的资源,jar包和so链接文件等。用于本模块的链接和集成。
jniLibs 在build.grade中你指定的jniLibs目录整个拷贝。模块链接到的库文件会被捆到bundles目录。
objectFiles NDK,生成c++中间对象(.o)文件。
transforms 根据你当前选择的productFlavor和其包含的abiFilter,从bundles和binaries取出链接库。
接着就是output目录:
aar如果模块是android library
jar 如果模块是java library
apk 如果是Activity应用程序
最后就是tmp目录:
compile$(NDK_Module)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)MainCpp ndk编译日志
link$(NDK_Module)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)$(LIB_TYPE) ndk链接日志
编译的子目录由三要素组合而成,分别是
BUILD_TYPE := debug|release
ProductFlavor := 你在gradle文件中创建的flavor
abiFilter :=
逆向深入objc,c++ windows下仿objc动画层UI引擎
Android操作系统目录结构详解。Android操作系统没有内置文件管理器,经过安装第三方文件管理器后可以对主系统内存和SD卡上的文件管理。主内存中的文件目录都是由主系统自动生成。下面是Android系统目录结构详解,供大家交流使用。
不废话先上图:
目录分为
原文:
本文仅仅记录笔记。
忍不住整理了一份自己喜欢的阅读风格
层次分明的Android文件目录,清晰的结构帮你更好的理解Android系统
有补充欢迎评论
原来,只要把文件写在这里的话,可以不用动态申请权限,只要在manifest里面声明权限就ok了;
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
并且在API
6.0之后,根目录文件存储是需要用户授权的,就算你在AndroidManifest.xml中配置了存储权限,用户不授权也是写不进去了。
SD卡读写权限:
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过
可以得到
这个目录里面,一般放一些长时间保存的数据
方法可以获取到 SDCard/ Android /data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过
方法可以获取到
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。并且
这个方法获得的文件存储路径适用于6.0以后系统,只要AndroidManifest.xml配置读写权限了,就不需要用户再授权了。
正常开发中获取存储路径的方法是:
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/application package/cache 这个路径,而后者获取到的是 /data/data/application package/cache 这个路径。
设置-应用-应用详情里面的”清除数据“与”清除缓存“选项分别对应的是data/data/application package/和data/data/application package/cache
external storage (外部存储):
Environment.getExternalStorageDirectory()SD根目录:/mnt/sdcard/ (6.0后写入需要用户授权)
context.getExternalFilesDir(dir)路径为:/mnt/sdcard/Android/data/ package name /files/…
context.getExternalCacheDir()路径为:/mnt/sdcard//Android/data/ package name /cache/…
internal storage(内部存储):
context.getFilesDir()路径是:/data/data/ package name /files/…
context.getCacheDir()路径是:/data/data/ package name /cach/…