Android 文件系统读写功能测试工具iozone移植。
2015-04-19 10:00
976 查看
iozone可以对文件系统读写功能进行自动测试,首先需要下载iozone。然后源码文件夹放在Android源码下mm编译出bin文件放入设备bin文件夹下面并赋予读和执行权限。
下面是具体步骤,如果会编译的,不需要的可直接跳过。
1,将iozone4Android-master源码文件夹复制到Android源码下,我一般喜欢放在android4.4/device/myproduct/common/lib 下。
2,进入源码根目录android4.4/,输入:”. build/envsetup.sh” 选择自己的编译“choosecombo X X X”
3,进入iozone4Android-master下:cd device/infotm/common/lib/memtester-4.3.0/, “mm”编译。
4,进入android4.4_sz/out/target/product/myproduct/system/bin ,找到生成的iozone文件。
5,串口连接设备后,输入”mount -o rw,remount /system” (一定要一模一样,空格和斜杠不能多也不能少)复制iozone文件到设备的/system/bin/目录下,使用“chmod 755 /system/bin/iozone”赋予文件权限。(7、5、5分别对应系统、组、用户三级,7为读、写、执行,5为堵、执行、4为只读)
在串口操作下,进入iozone目录: system/bin下,输入 “iozone -a”,就可以看到测试的输出了,具体测试指令可以查看iozone的说明。
现在需要在上层Android应用中打开iozone,需要使用以下方法:
这里可以看到,要执行iozone只要在/system/bin下执行,但是默认文件路径是根目录,iozone不能测试,需要进入到可读写路径如 /sdcard下,上层是不能使用“cd /sdcard”切换路径的。这里需要更改iozone的源码,修改iozone的测试路径。
打开iozone源码文件下的iozone.c文件,修改测试的路径。这个修改比较多,
然后就可以用上面的代码:
在apk里边启动iozone了。
使用如下代码抓取输出:
就可以看到输出了,可以把line赋值给TextView等使它显示在用户界面上。while是一个死循环,如果放在主线程里边会使apk崩溃,这个输出应该另外建立一个线程来执行,通过msg.obg把line赋值,然后用一个handle在主线程里边接收,这样就可以了。由于是读写测试,需要在AndroidManifest里边给apk读写权限,并且添加android:sharedUserId=”android.uid.system”给apk系统权限。然后将apk放在系统源码里边,在*.mk里边的PRODUCT_PACKAGES += \里边添加apk包名(和apk目录下的Android.mk的LOCAL_PACKAGE_NAME := XXX一致)。
下面是具体步骤,如果会编译的,不需要的可直接跳过。
1,将iozone4Android-master源码文件夹复制到Android源码下,我一般喜欢放在android4.4/device/myproduct/common/lib 下。
2,进入源码根目录android4.4/,输入:”. build/envsetup.sh” 选择自己的编译“choosecombo X X X”
3,进入iozone4Android-master下:cd device/infotm/common/lib/memtester-4.3.0/, “mm”编译。
4,进入android4.4_sz/out/target/product/myproduct/system/bin ,找到生成的iozone文件。
5,串口连接设备后,输入”mount -o rw,remount /system” (一定要一模一样,空格和斜杠不能多也不能少)复制iozone文件到设备的/system/bin/目录下,使用“chmod 755 /system/bin/iozone”赋予文件权限。(7、5、5分别对应系统、组、用户三级,7为读、写、执行,5为堵、执行、4为只读)
在串口操作下,进入iozone目录: system/bin下,输入 “iozone -a”,就可以看到测试的输出了,具体测试指令可以查看iozone的说明。
现在需要在上层Android应用中打开iozone,需要使用以下方法:
Process mProcess = Runtime.getRuntime().exec("sh"); DataOutputStream mDataOutputStream = new DataOutputStream(mProcess.getOutputStream()); mDataOutputStream.write("需要执行的命令".getBytes()); mDataOutputStream.flush(); mDataOutputStream.close();
这里可以看到,要执行iozone只要在/system/bin下执行,但是默认文件路径是根目录,iozone不能测试,需要进入到可读写路径如 /sdcard下,上层是不能使用“cd /sdcard”切换路径的。这里需要更改iozone的源码,修改iozone的测试路径。
打开iozone源码文件下的iozone.c文件,修改测试的路径。这个修改比较多,
然后就可以用上面的代码:
Process mProcess = Runtime.getRuntime().exec("sh"); DataOutputStream mDataOutputStream = new DataOutputStream(mProcess.getOutputStream()); mDataOutputStream.write("iozone -a".getBytes()); mDataOutputStream.flush(); mDataOutputStream.close();
在apk里边启动iozone了。
使用如下代码抓取输出:
InputStreamReader inStream = new InputStreamReader(mProcess.getInputStream()); mBufferReader = new BufferedReader(inStream); String line = ""; while ((line = mBufferReader.readLine()) != null) { Log.d("myTest",line+"\n"); }
就可以看到输出了,可以把line赋值给TextView等使它显示在用户界面上。while是一个死循环,如果放在主线程里边会使apk崩溃,这个输出应该另外建立一个线程来执行,通过msg.obg把line赋值,然后用一个handle在主线程里边接收,这样就可以了。由于是读写测试,需要在AndroidManifest里边给apk读写权限,并且添加android:sharedUserId=”android.uid.system”给apk系统权限。然后将apk放在系统源码里边,在*.mk里边的PRODUCT_PACKAGES += \里边添加apk包名(和apk目录下的Android.mk的LOCAL_PACKAGE_NAME := XXX一致)。
相关文章推荐
- Android 文件系统读写功能测试工具iozone移植。
- Iozone 文件系统的读写性能测试工具的使用
- android系统移植emmc记录(6)--sd卡烧写文件分析 .
- imx515 uboot UBIFS移植及android UBIFS文件系统烧写
- Android系统中的任意文件读写方法
- 「ext2fsd」Windows系统读写ext2/3/4文件系统的工具
- Android移植之文件系统总结
- Android 文件系统移植到 2440 未完
- 小工具:命令行设置注册表、文件系统的读写权限
- Android移植之文件系统总结
- imx515 uboot UBIFS移植及android UBIFS文件系统烧写
- Android 文件系统移植到 2440 未完
- IOzone 一种文件系统测试工具
- 内核移植和Android文件系统
- Android 文件系统移植总结
- Android 文件系统移植
- Android内核移植,以及从普通文件系统启动后手动挂载android文件系统
- 给android系统文件加读写权限
- Linux文件系统性能测试工具fdtree和iozone
- Android移植之文件系统总结