8

我正在尝试使用 Android 的更新程序脚本语言(Edify?)通过无线方式将 APK 安装到我可以控制的嵌入式设备上。 是描述该语言的链接。

我的第一次尝试如下:

package_extract_file("added_files/data/app/test.apk", "/data/app/test.apk");

这导致test.apk自动安装在 中/data/data/com.acme.test,但是该目录/data/data/com.acme.test/lib是空的,而它应该包含. 中包含test.so的共享库test.apk。(如果我使用 手动安装adb install test.apk,则会提取库。)

然后我尝试将 APK 提取到/data而不是/data/app这样操作系统不会自动将其安装到/data/data中,我可以尝试使用脚本进行安装:

package_extract_file("added_files/data/app/test.apk", "/data/test.apk");
run_program("/system/bin/pm", "install", "/data/test.apk");

这导致了以下错误:

about to run program [/system/bin/pm] with 3 args
run_program: execv failed: Exec format error
run_program: child exited with status 1

我不确定为什么会发生上述错误。

有没有办法安装 APK 并自动提取其共享库?我可以手动安装这些库,但我希望避免这种情况。

4

2 回答 2

1

我不熟悉 Edify,但通过查看文档,package_extract_file()只需将 APK 提取为存档文件即可。为什么数据最终在里面/data/data很奇怪;你确定这不是以前安装留下的吗?我建议完全卸载该应用程序并重试。

在我看来,该特定功能不适合安装应用程序。您可能想尝试通过命令安装它:

run_program("adb", "install", "-r", "added_files/data/app/test.apk");
于 2013-02-01T22:49:51.873 回答
0

Edify 脚本在恢复模式下运行,根据您的设备,默认情况下并非所有分区都可用。您的问题很可能是您尝试使用的分区尚未安装。

于 2013-02-10T09:08:41.763 回答