如何使用Android更新程序脚本安装APK

我正尝试使用Android的更新脚本语言(Edify?)将APK无线安装到我已经控制的embedded式设备上。 这是一个描述语言的链接。

我的第一次尝试是以下几点:

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,并自动提取共享库? 我可以手动安装库,但我希望避免这种情况。

Solutions Collecting From Web of "如何使用Android更新程序脚本安装APK"

我不熟悉Edify,但通过查看文档, package_extract_file()只是简单地将APK作为归档文件提取出来。 为什么数据结果里面/data/data是奇怪的; 你确定不只是从以前的安装落后? 我build议完全卸载的应用程序,并再次尝试。

在我看来,这个特殊的function不适合安装应用程序。 你可能想尝试通过命令来安装它:

 run_program("adb", "install", "-r", "added_files/data/app/test.apk"); 

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