2016-04-14 10 views
1

アンドロイドアプリ全体を別のアンドロイドアプリに含めるパッケージにすることはできますか?アンドロイドアプリ全体をライブラリにパッケージ化できますか?

私は、.jarファイルにコンパイルされたプレーンなJavaコードについてだけではありません。私はすべてを含むように言及しています:Javaコード、レイアウトなど。そして、この "ライブラリ"と通信するためにインテントを使用します。別のapkや別のアプリをインストールする必要はありません。それは1つのAPK全体が別のものに含まれており、すべてのものを新しいアプリケーションにするようなものです。おそらくマニフェストを別々に扱う必要があるでしょう。

私はこのチュートリアルを見てきましたが、普通のJavaコードを持つ通常の.jarをリストしています。

http://www.vogella.com/tutorials/AndroidLibraryProjects/article.html

大幅理解任意のポインタ。 thx!

+1

[library modules](http://developer.android.com/tools/projects/index.html#LibraryModules)を作成することは間違いありません。これはリンク先のチュートリアルでカバーされ、JARに焦点を当てた古い資料が散在しています。あなたが "コミュニケーションのために意図を使う"かどうかは、あなたがライブラリとアプリケーションの両方を書くので、あなた次第です。 – CommonsWare

+0

私は実際にできるように見えます。 aarファイル。 http://tools.android.com/tech-docs/new-build-system/aar-format https://androidbycode.wordpress.com/2015/02/23/building-an-aar-libraryイン・アンドロイド・スタジオ/ – gmmo

答えて

0

.aarアーカイブを作成できます。はい。このことについて知っているいくつかのこと:

  • AARは、ライブラリプロジェクトとして構築されている、のGradleプラグイン「com.android.library」
  • とあなたはまだ依存関係を宣言するシェルアプリケーションのプロジェクトを持っている必要がありますライブラリから構築されたaarに。
  • aarには独自のマニフェストとリソースがあります。マニフェストとリソースはがシェルアプリケーションのマニフェストにマージされます。マニフェスト合併のプロセスを理解することをお勧めします。
  • もちろん、aarには独自のコードがあり、シェルアプリケーションはaarに含まれるクラスを複製できません。
  • シェルアプリケーションは、独自のbuild.gradle内の独自のアプリケーションIDと、 'com.android.application'プラグインで構築されたアプリケーションに必要なその他の必須プロパティを宣言する必要があります。
  • アプリケーション設定は、aarの設定と競合することはありません。たとえば、aarの最小値よりも低いAPIレベルをターゲットにすることはできません。
  • アプリケーションは、aarで定義されたリソースをオーバーライドできません。それは別の方法です - ライブラリは、アプリケーションで定義されたリソースをオーバーライドします。

アプリのファイル構造に直接AARを含めている場合は、この(または類似)のような、それへの依存性を宣言する必要があります:

repositories { 
    flatDir { 
     dirs 'libs' // place the aar in here 
    } 
} 
dependencies { 
    compile(name:'fileNameOfAarWithoutExtension', ext:'aar') 
} 

しかし、あなたが配布している場合あなたはmaven依存関係として、単にmaven座標を使うことができます。

他にも知っていることがあるかもしれませんが、それは私の頭の上から考えることができます。

関連する問題