コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

タグの意味を間違えていた

タグの意味を間違えていたため、Lintエラーが出てSigned Apllication Packageをエクスポートできない現象にはまってしまいました。
 何を間違えていたのか、防備録として書いておきます。

Lintエラーの内容

エラーは下記のようなものでした。タグは、の中に置くべきであると言っています。

The <uses-library> element must be a direct child of the <application> element
Issue: Checks that various manifest elements are declared in the right place
Id: WrongManifestParent

The <uses-library> element should be defined as a direct child of the <application> tag, not the <manifest> tag or an <activity> tag. Similarly, a <uses-sdk> tag much be declared at the root level, and so on. This check looks for incorrect declaration locations in the manifest, and complains if an element is found in the wrong place.

確かに、私はの外にを置いていました。
そこで、Lintチェックで指摘された通り、タグを内に置きました。そして、パッケージをエクスポートしたところ、無事apkが生成されました。
ところが、apkをインストール使用すすると下記のようにインストールに失敗します。

Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]
06-28 15:51:39.016: E/PackageManager(61): Package com.momoonga.luarida requires unavailable shared
library org.apache.http.entity; failing!

ライブラリが共有されていないと言っています。ライブラリの場所がわから無いようです。ライブラリはしっかりビルドパスに書かれていますし、.classpathファイルを見ても、ちゃんと書いてあります。
それでは、何故インストールに失敗するのか?

勘違いしていたこと

そもそも、タグは、外部ライブラリの利用を宣言するタグでは有りませんでした。タグは、端末固有のライブラリを使用したいときや、Androidのライブラリで自動的にリンクされないライブラリをリンクさせたいときに宣言するものでした。
それで、内にタグを書いたことによって、端末固有のライブラリの使用が宣言されたと認識され、そのようなライブラリが見つからないというエラーが出てしまったということでした。
では、何故、いままでエラーが出なかったかと言うと、の外にタグを書いていたので、無視されていたということでした。
要するに、外部ライブラリについては、何もmanifest.xmlに書く必要が無いということです。
以上、防備録終わりです。