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と、ライブラリが抽出されます。)

次に、OSが自動的にAPKをインストールしないように、の/data代わりにAPKを抽出してみました。スクリプトを使用して、APKをインストールしてみました。/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 に答える