1

アプリケーション(このapp1と呼びましょう)を別のアプリケーション(app2)に統合したいと思います。このアプリケーションは、ボタンをクリックするだけでapp1を呼び出します。app1のソースコードをapp2に公開せずに、これを実現するための可能な方法は何ですか。app1は、個別のアプリケーションとしてインストールするのではなく、app1の一部である必要があります。

どういうわけかapp1をjarファイルに変換してapp2に統合することを考えていましたが、これは可能ですか?または上記の要件を達成するためのいくつかの方法を提案してください。

4

6 に答える 6

4

アプリ1にAndroidリソースファイル(レイアウト、xmlドローアブルなど)とjar依存関係がある場合、それらを公開することは避けられません。

リソースと外部jarを公開する場合は、次のことができます。

  1. app1をAndroidライブラリに変更します。
  2. app1と同じリソースとjarを使用して(ソースなしで)別のライブラリプロジェクトを作成します。
  3. 生成されたjarファイルをapp1ライブラリプロジェクトbinフォルダーからsecondsライブラリプロジェクトlibsフォルダーにコピーします。

最終結果は、Javaソースファイルを含まないライブラリプロジェクトですが、リソースを使用すると、このライブラリプロジェクトをJavaファイルを公開せずにアプリBで使用できます。

app1へのリファクタリングが必要になる場合があることに注意してください。

于 2012-10-01T21:12:48.037 に答える
2

私はあなたの質問app1はあなたのものではないことを理解していますが、あなたはあなたのアプリ(app2)内からその機能を使用したいと思っています。この場合、インテントであるAndroidのアプリ間通信のルールに従う必要があります。app1が汎用ユーティリティアプリケーション(バーコードリーダーや画像エディターなど)である場合、それらの必要なインテントは(開発者として)あなたによく知られており、問題なく使用できます。

これで、app1がユーザーのデバイスにインストールされていない場合でも、いつでもチェックを実行して、ユーザーにインストールを求めることができます。さらに、app1のライセンスポリシーに問題がない場合は、apkをアプリケーションと一緒に配布して、ユーザーのデバイスにインストールできます。

アプリケーションがインストールされているかどうかを確認するためのコードサンプルを次に示します(実際には、アプリケーションを起動できるかどうかを確認するため、インストールされています)。

public static boolean isAppInstalled(Context cx, String packagename) {
    PackageManager pm = cx.getPackageManager();
    Intent i = pm.getLaunchIntentForPackage(packagename);
    return (i != null);
}

ダウンロードしてインストールするようにユーザーに促す場合は、ここから開始できます

また、アプリケーション内からapkを配布している場合は、ここでapkを起動する方法を確認できます。

最後に、apkをjarに変換することについて、これが可能かどうかはわかりませんが、可能であれば、アプリケーションを作成するためのベストプラクティスではないある種のハックになります。一方、非常に幅広い機能分野をカバーする無料のAndroidライブラリ(jarファイル)が数多くあり、それらをアプリケーションに非常に簡単に統合できます。

お役に立てれば...

于 2012-09-28T21:42:48.737 に答える
0

インテントシステムはまさにあなたが探しているもののようです-Androidインテントはアプリ間通信用に設計されています-これは他のインストールされたアプリケーションのさまざまな機能にアクセスするための標準的な方法です(たとえば、それはあなたが送信する方法です電子メールとして画像化するか、フェイスブックに共有するか、インストールされているギャラリーソフトウェアに表示します)。

インテントシステムは、データの双方向の受け渡しを可能にし、静かな文字列です。インタラクションの正確な性質に応じて、他のアプリケーションが同じ方法でインタラクションできるように、このインターフェイスを公開することを選択します。

于 2012-09-28T09:03:13.723 に答える
0

図書館プロジェクトがあなたの求める答えだと思います。

App1プロジェクトをライブラリプロジェクトに設定する必要があります。Eclipseでプロジェクトを右クリック->プロパティ->Android->isLibraryを確認します。

APp2プロジェクトで、次の操作を行います。Eclipseでプロジェクトを右クリック->プロパティ->Android->追加->App1を選択します。

これで、App2プロジェクトのApp1で定義されているものをすべて使用できます。

于 2012-09-29T23:19:24.857 に答える
0

あなたの元の質問とあなたが提供した回答を読んだ後、あなたの要件をさらに理解するために、あなたが望むことを達成することは不可能です。実際、これは仕様によるものです。

他の人が述べたように、Androidは、インテントを介したアプリケーション間通信のための特定の方法論を提供しますが、これは明らかに機能しません。

于 2012-10-04T03:37:57.890 に答える
0

プラグインに似ていると思います。アプリケーションにプラグインアーキテクチャを設定することは可能です。これらのリンクはあなたを助けるはずです:

于 2012-10-04T03:58:28.630 に答える