[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

你可能感兴趣的:(子类__Android)