有料の Android アプリケーションで LGPL ライブラリを使用できますか? LGPL ライブラリを変更するつもりはありません。単に使用したいだけです。それは合法ですか?
6 に答える
無料または有料の Android アプリで LGPL を使用することは合法ですが、LGPL に準拠するには、次のことを行う必要があります。
- 使用されているライブラリと元のコードの場所をユーザーに示します。
- LGPL の対象となるコードを難読化しないように proguard を構成します。
- 署名のコンプライアンスに関するアプリでのチェックは避けてください。
- ライブラリーの交換方法をユーザーに指示します。
ポイント 4 については、dex2jar を使用するように指定し、LGPL コードを置き換えて、APK に再署名することができます。ユーザーには多くの作業が必要ですが、LGPL が言うように、最終ユーザーがコードを再結合または再リンクできるようにすることは可能です。さらに、アプリで Google サービスを使用する場合、ユーザーはアカウントを作成して独自の API キーなどを生成する必要があります。
有料のAndroidアプリを作成している場合は、LGPLの特定の問題である代替性に問題がある可能性があります。一般に、組み合わせた作品を配布するときは、ライブラリを別のバージョン(新しいバージョンなど)に置き換える可能性をユーザーに提供する必要があると記載されています。以前のコメントで述べたように、DEXファイルの場合は非常に疑わしいです。
単一のDEXファイルの代わりに、依存ライブラリからLGPLでリリースされた別のアプリケーションを作成することもできます。このようなアプリケーションでは、有料アプリケーションから接続するサービスを作成します。次に、LGPLライブラリを新しいバージョンに置き換えるには、ライブラリのAPKを再コンパイルして再インストールするだけです。
もちろん、面倒なのは、インストールするAPKが複数あることです。
私は弁護士ではありませんが、GNU Lesser General Public License 3.0 の理解から、セクション 4では、要件に記載されているように静的リンクを明示的に除外しています。
また、次の各事項を行う場合、結合作品に含まれるライブラリの一部の変更、およびそのような変更をデバッグするためのリバース エンジニアリングを効果的に制限しない、選択した条件の下で結合作品を伝達することができます。
- [...]
d)次のいずれかを実行します。
- 0) このライセンスの条件に基づいて対応する最小限のソース、および対応するアプリケーション コードを、ユーザーがアプリケーションをリンク バージョンの修正バージョンと再結合または再リンクして、対応するソースを伝達するために GNU GPL のセクション 6 で指定された方法で、修正された結合著作物。
- 1)ライブラリとのリンクには、適切な共有ライブラリ メカニズムを使用します。適切なメカニズムは、(a) ユーザーのコンピューター システムに既に存在するライブラリのコピーを実行時に使用し、(b) リンク バージョンとインターフェイス互換性のあるライブラリの修正バージョンで適切に動作するものです。
(私のものを強調してください。)
Android APK の性質上、セクション 4d.0 は不可能です。APK は Dex にコンパイルされ、参照ライブラリを含む全体として署名されます。そのため、元のソース コード、キーストア、およびキーストアのパスワードがなければ、ライブラリを交換することはできません。
セクション 4d.1は、2 つの APK をデプロイすることで可能になる場合があります。
- LGPL ライブラリを含む 1 つの APK と、LGPL の下でライセンスされたオープン ソース
- LGPL アプリケーションを参照する別の独自の APK。
ただし、このようなアプリケーションを直接 Google Play から展開することはできません。その場合、ユーザーが LGPL 依存関係のダウンロードに進むという要件を具体的に追加する必要があります。LGPL 依存関係は、Google Play で別のアプリケーションとして展開する必要があります。これはエンド ユーザーにとって非常に面倒であり、一般的なコンシューマ アプリケーションでは現実的には選択肢になりません。
William Tate's answerでのFalken 教授との議論によると、LGPL の条件は、ネイティブ コードを介して含まれる C ライブラリに適用される可能性があります。これは、個別のライブラリとして APK 内に存在するためです。APK に署名することはできませんが、オブジェクト ファイルを置き換えて APK を再パックすることは可能です。私の見解では、それは技術的にライセンスの要件に適合しています。
droidText ライブラリ (Android で PDF 形式にエクスポートするために使用され、LGPL の下でリリースされます) には、ライブラリを使用し、LGPL に準拠する方法の詳細な説明があります。
http://code.google.com/p/droidtext/wiki/LGPLコンプライアンス
とても役に立ちました。基本的に、ユーティリティ (dex2jar) を使用してライブラリの jar を dex ファイルから取り出します。したがって、エンド ユーザーは、必要に応じて、droidText ライブラリの新しいバージョンで更新できます。
私はずっと、LGPL は非常に「灰色の領域」だと思ってきました。LGPL コード/ライブラリなどの使用方法に関する詳細はありますが、必ずしも作成者の正確な要件を反映しているわけではありません。
個人的には、作者に連絡して懸念事項を説明し、使用を許可してもらえるかどうか尋ねることをお勧めします。
これはあなたの主な懸念事項を概説するはずです: http://answers.google.com/answers/threadview/id/439136.html
そのほとんどは、ライブラリの使用法を公開し、ライセンスに従って配布の規則を遵守していることを確認しているようです。