连接:
http://purerain2002.spaces.live.com/blog/cns!D5D0B8EF1CE02864!1243.entry
1. 修改测试用应用apk,安装位置为auto,internalOnly,用adb install均成功安装到内部存储器上。安装位置设置为preferExternal,安装不成功。
2.修改平台的安装位置,
adb shell pm setInstallLocation [0/auto] [1/internal] [2/external]
0, 1 安装程序成功;2 安装程序成功,但是装在内部区了;
=============
综上,外部安装在frescale平台上是有问题的。
3. 通过setting菜单 move to sdcar ,同样failed。
===============
move的方式也是有问题的。
4. 通过move 错误的log查看
I/PackageHelper( 2557): Size of container 2 MB 14305 bytes
D/VoldCmdListener( 2129): asec create com.tecom.welly.test-1 2 fat {} 10004
E/Vold ( 2129): Error opening devmapper (No such file or directory)
E/Vold ( 2129): ASEC device mapping failed (No such file or directory)
E/PackageHelper( 2557): Failed to create secure container com.tecom.welly.test-1
E/DefContainer( 2557): Failed to create container com.tecom.welly.test-1
I/PackageHelper( 2211): Forcibly destroying container com.tecom.welly.test-1
D/VoldCmdListener( 2129): asec destroy com.tecom.welly.test-1 force
E/Vold ( 2129): Failed to unlink asec '/mnt/secure/asec/com.tecom.welly.test)
I/PackageHelper( 2211): Failed to destroy container com.tecom.welly.test-1
I/PackageHelper( 2211): Forcibly destroying container com.tecom.welly.test-1
D/VoldCmdListener( 2129): asec destroy com.tecom.welly.test-1 force
E/Vold ( 2129): Failed to unlink asec '/mnt/secure/asec/com.tecom.welly.test)
I/PackageHelper( 2211): Failed to destroy container com.tecom.welly.test-1
I/PackageHelper( 2211): Forcibly destroying container com.tecom.welly.test-1
I/PackageHelper( 2211): Failed to destroy container com.tecom.welly.test-1
D/VoldCmdListener( 2129): asec destroy com.tecom.welly.test-1 force
E/Vold ( 2129): Failed to unlink asec '/mnt/secure/asec/com.tecom.welly.test)
I/dalvikvm( 2302): Jit: resizing JitTable from 4096 to 8192
可知 devmapper 没有打开。在freecale的代码中找到相应的code
system/vold/Devmapper.cpp 中
int Devmapper::create(const char *name, const char *loopFile, const char *key,
unsigned int numSectors, char *ubuffer, size_t len) {
char *buffer = (char *) malloc(4096);
if (!buffer) {
SLOGE("Error allocating memory (%s)", strerror(errno));
return -1;
}
int fd;
if ((fd = open("/dev/device-mapper", O_RDWR)) < 0) {
SLOGE("Error opening devmapper (%s)", strerror(errno));
free(buffer);
return -1;
}
出错的代码就在这里。
===============
综上,可以推导fd = open("/dev/device-mapper", O_RDWR)) 这句应该open没有成功,为什么呢?
目前的解决方案,通过google open code project中的某个项目和搜索,知道是kernel中有一些modules没有加上。
====================
It looks like your kernel is missing device mapper support:
CONFIG_BLK_DEV_DM, (depends on CONFIG_MD)
Also enable DM_CRYPT, DM_UEVENT and CRYPTO_TWOFISH (needed by asec).
在kernel的config中加上一些项目
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
CONFIG_DM_CRYPT=y
CONFIG_DM_UEVENT=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
编译后,升级kernel。
=============
测试:
1. 通过在sdcard 的app目录中拷贝apk,并修改其属性来安装apk。通过这种方式安装,move to sdcard 失败。
apk本身的属性为sdcard的时候,安装不会失败。(同以前安装失败对比)
2. 通过adb install 安装apk,在apk的属性为auto或者sd card的情况下,move to sdcard 和 move to phone 均告成功。
=========
分享到:
相关推荐
FRESCALE CAN BOOTLOADER是一种专门针对FRESCALE(飞思卡尔,现已被NXP半导体收购)微控制器的引导加载程序,它允许通过CAN(Controller Area Network)总线进行固件更新。CAN总线是一种广泛应用在汽车电子、工业...
frescale08单片机C编程要点
在本文中,我们将深入探讨Freescale(现为NXP半导体)的Hy64微控制器以及其中涉及到的CAN(Controller Area Network)驱动程序。CAN总线是一种广泛应用的串行通信协议,尤其在汽车电子系统中占据重要地位。...
移植 Tizento Frescale i.MX6 SoC grahic:韦兰/韦斯顿:好的 GPU:好的 多媒体:mp3/mp4 播放:ok 相机:ok 双视频输出:ok,(性能不好,主显示器(LVDS)上的视频很好,但hdmi 不稳定)单音频输出:ok 双音频...
摘要:MC33399是Frescale公司推出的汽车LIN总线单线物理接口器件。文中详细介绍了MC33399的主要功能、内部结构以及工作原理,并在此基础上给出了MC33399的典型应用电路。 关键词:MC33399 LIN总线 汽车电子 1 ...
摘要:MC33399是Frescale公司推出的汽车LIN总线单线物理接口器件。文中详细介绍了MC33399的主要功能、内部结构以及工作原理,并在此基础上给出了MC33399的典型应用电路。 关键词:MC33399 LIN总线 汽车电子 1 ...
摘要:MC33399是Frescale公司推出的汽车LIN总线单线物理接口器件。文中详细介绍了MC33399的主要功能、内部结构以及工作原理,并在此基础上给出了MC33399的典型应用电路。 关键词:MC33399 LIN总线 汽车电子 1...
摘要:MC33399是Frescale公司推出的汽车LIN总线单线物理接口器件。文中详细介绍了MC33399的主要功能、内部结构以及工作原理,并在此基础上给出了MC33399的典型应用电路。 关键词:MC33399 LIN总线 汽车电子 1...