public static final String SDPATH = Environment .getExternalStorageDirectory().getAbsolutePath();
//获取外部存储的路径返回绝对路径的,其实就是你的SD卡的文件路径
/storage/sdcard
/sdcard
/mnt/sdcard
以上三者的区别?
/sdcard是/mnt/sdcard的符号链,指向/mnt/sdcard,
/storage/sdcard 是sdcard的分区……
/sdcard/: this is a symlink to...
/mnt/sdcard (Android < 4.0)
/storage/sdcard0 (Android 4.0+)
/storage/emulated/0/
: to my knowledge, this refers to the "emulated MMC" ("owner part"). Usually this is the internal one. The "0" stands for the user here, "0" is the first user aka device-owner. If you create additional users, this number will increment for each./storage/emulated/legacy/
as before, but pointing to the part of the currently working user (for the owner, this would be a symlink to /storage/emulated/0/
). So this path should bring every user to his "part"./sdcard/
: According to a comment by Shywim, this is a symlink to...
/mnt/sdcard
(Android < 4.0)/storage/sdcard0
(Android 4.0+)/storage/sdcard0/
: As there's no legacy
pendant here (see comments below), the "0" in this case rather identifies the device (card) itself. One could, eventually, connect a card reader with another SDCard via OTG, which then would become /storage/sdcard1
(no proof for that, just a guess -- but I'd say a good one)
internal storage - Confused by the many locations of the virtual /sdcard/ - Android Enthusiasts Stack Exchange
http://android.stackexchange.com/questions/39542/confused-by-the-many-locations-of-the-virtual-sdcard
其实mnt/sdcard和sdcard就是同一个文件夹(就是手机上的内存),安装的软件就是存放在这。你用文件管理软件如果打开能直接显示sdcard文件夹的,应该是设置了这个文件夹的收藏快捷方式,相当于在电脑桌面建立的快捷方式。打开其实是内容一样的。而外置内存卡的路径是mnt/sdcard/external-sd 这个文件夹
我来告诉你真相
/storage/sdcard 才是实质挂载的位置。而 /sdcard 和 /mnt/sdcard 都是link 到 /storage/sdcard
可以在酷狗扫描音乐时将扫描设置中选择storage/不扫描即可无重复文件。
这是4.1和4.11新固化的功能!***U盘,俗称OTG.
/storage/sdcard 才是实质挂载的位置
你可以百度一下OTG!就明白是什么功能了!
这个目录里显示的是外接U盘或者移动硬盘里面的数据!!!!
mnt是unix传统系统下挂载外部设备的专用目录
mnt代表mount,mnt/sdcard是实际的文件所在的地方,/sdcard是mnt/sdcard的虚拟或快捷方式. 在android系统它们必须这样运作。
安卓系统是基于linux开发的,所以要用mnt来挂载外部设备,以便被系统调用,例如挂载内存卡之类的,不信你打开mnt,就会发现有sdcard文件夹,里面就是你的内存卡文件,所以mnt不可以删
Android系统的开放,使其用户可以自己查看系统和SD卡中的文件夹。就系统和SD卡中常见的目录代表什么意思,下面是一个较实用的总结:
一、SD卡中
1. /mnt/sdcard或者/sdcard这是Android手机中SD卡的文件夹路径,其中/mnt/sdcard/是android 2.2或更高版本所使用的,而/sdcard是android 2.1或早期版本的存储卡位置。
2. /mnt/sdcard/dcim或/sdcard/dcim这个DCIM文件夹是干什么用的,这里提示大家,一般数码相机都有DCIM文件夹,其中进入后Camera为手机摄像头拍摄的照片或视频存放位置。同时在DCIM文件夹中还有.thumbnails这个目录,在Linux中开头为“.”的文件夹就是开头为“点”的文件夹是隐藏目录,这里面记录着手机SD卡图片的缩略图。
3. /mnt/sdcard/LOST.DIR或/sdcard/LOST.DIR这个LOST.DIR为SD卡扫描时发现的丢失文件,里面的文件用处不大,可以不用理会。
二、手机或平板电脑中
1. /system/app 这里是android手机rom中的系统应用存放地,如果有Root权限可以将手机rom中自带的应用删除掉,这里面一般包含一个apk文件和odex文件,大家注意文件名一一对应。
2. /data/data 这里是每个安装过应用的用户文件存储位置,一般为设置文件、数据库或临时缓存文件,进入后以每个软件的package name包名来命名。
3. /dev 这里是Linux系统常规文件夹,里面的文件很多都是设备模拟的文件系统,一般用户无需理会。
4. /system/fonts 这里面保存着系统的字体,如果你有root权限,可以往里添加自己喜欢的字体,比如雅黑。
5. /system/framework 这里是android系统的框架,里面保存着系统核心程序或java类库,十分重要里面的任何文件几乎都不要做删除操作。
6. /media/audio 这里面保存着安卓系统默认的铃声,alarms是闹铃提醒的,notification是短信或提示音,ringtones是来电铃声,而ui是一些界面音效,比如键盘敲击声。
7./system/lib 里面保存的是系统底层类库,里面很多都是框架层的实现文件,一般以.so后缀结尾类似windows下的dll文件。
删除系统自带的软件有风险,请新手慎重!
odex文件外置主要是为了安全性,实质相当于一个加密文件。你如果要修改apk文件(图片除外),必须合并odex文件才行。
什么是ODEX?
ODEX是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。
这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。
ODEX作用
所谓Odex,是由android软件中的classes.dex生成的,Odex化即是把那个文件预先提取出来作用是能加快软件加载速度和开机速度。不过Odex也有缺点,那就是有时候加刷东西会出现问题。
看懂了吗?用我的理解,简单说,原本系统每次执行APK都需要先提取一部分出来,而Odex化就是现在你提前把它提取出来了。系统启动或者程序运行加快的原因也就在此。而由于提取了Odex出来,会占用一部分存储空间,所以做Odex化的时候需要考虑空间方面的问题。
Odex的效果
Odex化后系统启动和程序运行速度大大提高,稳定性不变。因此推荐做Odex化。
一般来说官方rom都是odex化的rom(含Odex文件),而定制rom大部分都是deodex化的(无odex文件)。两者应该各有优点吧,貌似现在也没有统一的说法。官方rom大部分每个apk对应一个.odex文件,而deodex化的rom里面只有一个apk,把.odex转换成classes.dex放到apk包里面了。所以 odex rom的.apk+.odex=deodex化rom的1个.apk (简单地来说,其实就上一个合并的过程)
Odex的优点
1.刷完机首次进入系统的时间会缩短一些。文件的运行速度应该也有所提升。
2.APK文件不能单独安装,并且如果反编译APK文件,一般也只能得到资源文件。可以说是起到一定的保护作用,避免被肆意修改和使用。这样做可以使其厂商保证一定的反盗版,因为没有dex文件的apk是无法正常安装的。
3.会增加一些可安装应用的空间,虽然不是很多。
Odex的缺点:
1.不方便修改ROM以及文件本身。
2.增加ROM包的体积,虽然不是很多。
3.当你升级某个被Odex的应用后,这个应用将会出现故障,最常见的就是FC。