[RK3288][Android6.0] 调试笔记 --- /data/app/预置apk安装失败

Posted KrisFei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[RK3288][Android6.0] 调试笔记 --- /data/app/预置apk安装失败相关的知识,希望对你有一定的参考价值。

Platform: ROCKCHIP
OS: android 6.0
Kernel: 3.10.92

需求:
在 /data/app下放置预置apk, 开机让其自动安装.
因此建了个test目录
root@rk3288:/data/app # mkdir test
然后将test.apk放了进去.

现象:
重启开机后提示:
01-23 01:14:03.831   520   520 W PackageManager: Failed to parse /data/app/test: No packages found in split

调试:
PackageParser.java:
private static PackageLite parseClusterPackageLite(File packageDir, int flags)
    throws PackageParserException
    final File[] files = packageDir.listFiles();
    if (ArrayUtils.isEmpty(files))
    throw new PackageParserException(INSTALL_PARSE_FAILED_NOT_APK,
            "No packages found in split");
    
......

这里只是将/data/app/test下所有文件(包括非apk文件)列出来,不应该出错.
后来发现是文件夹权限有问题.

解决方法:
root@rk3288:/data/app # chmod 777 test/

知识点
:
1. Android5.1以后支持split apk来觉得apk过大和文件句柄超过65536的问题,
用adb install 或者 pm install的apk会在/data/app下创建一个目录,目录下面放置apk.
当然,如果是single apk, 直接放在/data/app下也是可以的.
2. 放置在/data/app下的apk pms不会默认检测马上安装,直到下一次重启才会被安装.

参考:
http://www.iloveandroid.net/categories/Android%E5%BA%95%E5%B1%82%E5%BC%80%E5%8F%91/page/3/
http://blog.csdn.net/kitty_landon/article/details/46443849

以上是关于[RK3288][Android6.0] 调试笔记 --- /data/app/预置apk安装失败的主要内容,如果未能解决你的问题,请参考以下文章

[RK3288][Android6.0] 调试笔记 --- hwclock命令无法使用

[RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写

[RK3288][Android6.0] 调试笔记 --- /data/app/预置apk安装失败

[RK3288][Android6.0] 调试笔记 --- 系统识别不同硬件版本方法

[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED

[RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题