私のAndroidアプリでlgplライブラリを使用することについていくつか質問があります:
- .dexファイルではなく、apkの他の場所にライブラリを配置することは可能ですか?
- 同じプロジェクトでサービスを作成した場合、そのサービスは.dexファイル内にありますか?
- Androidアプリはapk内の複数の.dexファイルで構成できますか?
- インストール中に別のapkを自動的にインストールする方法はありますか(ユーザーに尋ねることなく/最初に検索することなく)?
ありがとう、フロリアン
法的地位(IANAL)に関係なく、技術的にこれを達成できるシナリオは実際にはわかりません。
私が理解しているように、Androidアプリで使用されるJavaライブラリは、dxコンパイラとapkbuilderの両方に提供する必要があるため、nixは#1です。dxへの入力には、コンパイルされたaidlソースも含まれるため、#2では「はい」です。次に、Androidアプリにはclasses.dexファイルが1つしかないので、#3が出ていると思います。#4についてはよくわかりません(Matt Wolfeのコメントに基づくと、これもノーです)。それが物事を明確にするのに役立つことを願っています、幸運...
参照: http: //www.alittlemadness.com/2010/06/07/understanding-the-android-build-process/
ProguardでLGPLライブラリを隠さない場合、エンドユーザーはapkをjarに変換し、jarを抽出し、LGPLライブラリクラスを置き換え、jarを再パックし、ユーザー生成キーで署名し、jarをapkに変換してから、新しいAndroidデバイスへのapk。
droidtextプロジェクトには、このプロセスの説明ページがあります。しかし、それを行うのは非常に混乱しているので、QuinnBaileyの答えはまだ優れています。
編集:ライセンスの問題によりdroidtextプロジェクトがシャットダウンされたため、参照したwikiページは停止しています。ウィキページのローカルコピーをお持ちの場合は、本当に感謝しています。以下は私が覚えている重要なステップのリストです:
開発者は、Proguard構成ファイルを編集して、LGPLライブラリパッケージ全体が隠されないようにする必要があります。(プロガードがパッケージ全体を難読化するのを防ぐ方法は?)
ユーザーは、apktoolやdex2jarなどのツールを使用して、apkとそのコンテンツを解凍、変更、および再パックできます。