色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 解決Android關于SD卡轉化為ext4以及熱插拔支持功能

解決Android關于SD卡轉化為ext4以及熱插拔支持功能 時間:2018-09-21      來源:未知

本文說是SD卡的加密其實有點牽強,但和sd卡的加密實現的功能差不多類型,不同的是實現的方式不太一樣,如果你對arm接口編程技術非常精通的話,那么對于本文你就不需要看了。

現在我來說說他的實現原理:我要實現的功能是讓SD卡。

1、在windows上不可識別也不可讀寫。

2、在linux上可識別不可讀寫。

3、在android系統上可識別可讀寫。

前兩個條件都非常的簡答實現,唯獨后一個實現是本文的重點。

為什么我要說他是另類呢?我就要說說我的開發環境了。

作者的開發環境是一款以arm-v7架構的android4.4KK系統的平板,因為沒有這款平板的源碼,所以我就無法修改源碼,直接進行系統的修改。

如果通過移植的方式來獲取源碼的話,所消耗的時間太長。開發周期就會變長,所以要在短時間內實現SD卡加密的話,不妨看看本篇文章。

首先我們知道windows 只支持的vfat的系統只要讓我們的SD卡成為非VFAT系統我們就可以找到我們的加密思路了。

首先我選定的是ext3文件系統(linux支持的ext系列文件系統)。

將SD卡格式化成刷成了ext3文件系統,雖然1 、 2條件滿足但3條件不滿足,我查了android4.4的linux內核,他沒有選定ext3系統所以在此我們不能用。然后就選定了ext4,將ext3 換成了ext4。

這里的格式化工作你可以用分區工具可以,也可以用linux的fdisk -t ext4指令也可以還可以進入android系統用mke2fs。

例如設備結點 /dev/block/vold/179:1

disk -t ext4 /dev/block/vold/179:1

mke2fs -t ext4 /dev/block/vold/179:1

這樣我們的SD卡就制作好了現在我們就要往android系統上掛載了,經過我反復的實驗和測試:android系統沒有自動掛載非VFAT文件系統的支持,雖然他的kernel支持的文件系統非常多,但是他的framework層并沒有對其他文件系統的支持,(網上也有人說支持,只是支持的功能出現問題了不完善)。

下面我開始說一下流程以及容易出現的ERROR錯誤。那些不正確的思路我就不表述了。

1、將SD卡插入手機(ext4系統的)通知上顯示有損。

2、通過adb shell進入android系統終端。

關于adb shell的出現的問題以及配置我就不表述了。可以百度一下就可以了。

我說一說在使用ADB shell的時候容易出現的問題。

1、解決device not found問題 (安裝驅動)。

2、解決device offline問題 (改成usb調試模式)。

3、解決讀寫權限問題 (root刷機)。

4、解決 didn’t ack 問題 (adb kill-server adb start-server)。

以上問題我用到的工具:驅動精靈,超級root大師,金山手機助手,putty.exe(支持adb shell) 這些工具都可以在網上找的到。

當你成功進入adbshell的時候,就進入的二階段編寫腳本shell。

進入之后

1、通常linux指令不齊全,需要你通過adb push 添加busybox到system/bin,使用指令busybox --install /system/bin 安裝busybox。

2、而且還需要你輸入讓你擁有在系統創建目錄文件的能力mount -o remount,rw/dev/block/mtdblock0/system /。

3、知道android系統人都知道,在系統開機的時候通常會運行init.xxx.rc或者是init.rc,這里我就是修改的init.rc 添加了一個service 功能。

例:

service whtest /system/bin/whtest.sh

Oneshot

然后我在/system/bin/whtest.sh

#!/system/bin/sh

#-------------------------------------------------------------------

umount /mnt/external_sd

mount -o remount,rw/dev/block/mtdblock0/system /

mount -t ext4 -o rw /dev/blockold/179:1 /mnt/external_sd

chmod 777 wangyingzheng

mv /wangyingzhengsybox /system/bin

chmod 777 /system/binsybox

busybox --install /system/bin

#-------------------------------------------------------------------

完成之后你就可以通過《固件工廠工具》將刷機的鏡像解包修改這上面的代碼,然后打包。刷機就可以完成。對SD卡的刷機功能了。

感覺到了這里基本的功能基本算是實現了。將ext4文件系統掛載到android系統上了。

但是問題出現在了熱插拔上,當你開機之后或者關機之后將SD卡拔出在插入,就會掛不上。出現掛空的現象。因為你雖然再開機初始化的時候進行了掛載。但是顯然這個設備節點不存在。你用掛空的方式將其掛上。等你在插上的時候系統認為你已經掛載完畢了就不在掛載了,且這個掛載只有一次。就是在開機的是時候進行了掛載,但是掛載之后.SD卡有不存在。所以相當于你還是沒掛上SD卡還是原來的掛VFAT文件系統的掛載指令(android源碼的掛載指令是只掛載vfat系統)。

第三部我們就需要處理熱插拔掛載問題,這里我用到的系統為linux系統。

Android NDK開發包

1、配置NDK 讓其擁有交叉工具鏈的功能//blog.csdn.net/yxz329130952/article/details/7429124

2、編譯腳本讓C source編程可執行程序//my.oschina.net/redhouse/blog/101283

關于讓C可執行程序能在android系統上跑我通過上面兩個網站就可以解決。

(注意這里的NDK開發與通常我們java與JNI接口連接NDK有點不太一樣)。

我現在說一說我的原理我希望在他拔出卡的時候監聽到他拔出然后監聽設備結點文件是否存在然后進行掛載。

代碼如下:

#include <unsitd.h>

#include <stdio.h>

int main(int argc, const char *argv[])

{

int flag =0;

int res =0;

/* 當開機時 有卡 已經掛載成功了

*

* 當拔出卡前 文件存在,標志為為0 不執行

* 當拔出卡后 文件不存在,標志位為1 執行1

*

* 當插入卡前 文件不存在,標志為1 不執行

* 當插入卡后 文件存在 標志為1 執行2

* 當開機時 無卡 掛載失敗

*

* 當插入卡前 文件不存在,標志為0 執行1

* 當插入卡后 文件存在 標志為1 執行2

*/

while(1)

{

if(((res=access("/dev/block/vold/179:1",0))!=0)&&(flag==0))

{

system("umount /mnt/external_sd");

flag =1;

//

}else if(((res=access("/dev/block/vold/179:1",0))==0)&&(flag==1))

{

system("umount /mnt/external_sd");

ystem("mount -t ext4 -o rw /dev/block/vold/179:1 /mnt/external_sd");

flag =0;

}

然后通過文件生成可執行文件

代碼如下:

#!/bin/bash

PREFIX=/home/tqj/downloads/android-ndk-r10

CC="$PREFIX/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"

NDK="$PREFIX/platforms/android-14/arch-arm"

CFLAGS="-I$NDK/usr/include"

LDFLAGS="-nostdlib -Wl,-rpath-link=$NDK/usr/lib -L$NDK/usr/lib $NDK/usr/lib/crtbegin_dynamic.o -lc"

$CC -o hotSwap usb.c $CFLAGS $LDFLAGS

后將可執行文件拷貝到android系統的根目錄,在system/bin/whtest.sh 追加。

chmod 777 hotSwap

./hotSwap

當然因為這種掛載不是對源碼的修改所以有許多遺留問題比如,SD卡文件必須有777權限,還有notification通知還會“顯示存儲設備有損”。

上一篇:安卓中實現藍牙通信的工具

下一篇:嵌入式開發中的gzip打包命令

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 亚洲欧美综合在线天堂 | 免费精品国产自产拍在线观看图片 | 亚洲精品欧美精品日韩精品 | 在病房里和护士啪啪 | 国内综合精品午夜久久资源 | 亚洲高清揄拍自拍AV | 欧美丰满老妇性猛交 | 无遮挡h肉动漫在线观看 | 欧美顶级少妇做爰hd | 国产成人无码网站 | 国产乱码卡二卡三卡4 | 亚洲精品午睡沙发系列 | 国产性一交一乱一伦一色一情 | 日本精品视频 | 亚洲一卡二卡三卡四卡无卡网站 | 久草热久草在线视频 | 日韩一卡2卡3卡4卡新区亚洲 | 波多野结衣连续高潮中出 | 最新国产久免费视频在线观看 | 麻豆传谋在线观看免费mv | 嫩草影院最新网址 | 国产亚洲伦在线无码A片润滑油 | 亚洲AV成人无码一区在线观看 | 亚洲一区二区三区AV无码 | 亚洲欧洲日本无在线码 | 在线视频观看国产 | 在线免费av播放 | 日本高清视频色欧www | 免费大片AV手机看片高清 | 人妻丰满熟妇岳av无码区hd | 香蕉久久综合网 | 又黄又粗暴的120秒免费GIF视频 | 欧美成人精品A∨在线观看 国产精品久久香蕉免费播放 | 中文成人无码精品久久久不卡 | 2017亚洲天堂最新地址 | 无码h黄动漫在线播放网站 亚洲国产成人精品无码区宅男 | 宅宅午夜无码一区二区三区 | 免费毛片在线看片免费丝瓜视频 | 欧美日本一道本一区二区 | 免费国产黄网站在线观看 | 毛色毛片免费观看 |