2017-09-27 8 views
0

私はいくつかのユーティリティクラスを持つカスタムライブラリを持っています。私はこれまで、min SDK 21という単一のプロジェクトでそれを使用しました。異なるSDKの最小バージョンのプロジェクトで同じカスタムライブラリを使用する

ここでは、別のプロジェクトのクラスの1つ(min SDK 14)を再利用したいとします。クラスコードはバージョン14では問題ありませんが、Gradleはライブラリの最小SDKが21であることを気に入っていません。

この種の問題に対して推奨されるアプローチは何ですか?コードを再利用したいのですが、複製することはしません。

+0

そのライブラリのソースコードを入手できましたか?私はGithubのライブラリモジュールを意味します。 –

+0

@HareshChhelanaあなたはソースコードがこの質問に関連していると思いますか?どうして? – ilomambo

+0

コードをお持ちの場合は、ライブラリ全体ではなく、必要なクラスを保持してください。 –

答えて

1

Manifest Mergerを入力すると、インポートされたライブラリに<uses-sdk>を上書きすることができます。公式ドキュメントから

:デフォルトでは

、メインマニフェストファイルより 高いですエラーが発生すると、ライブラリ をインポートすることができませんminSdkVersionが値でライブラリをインポートします。合併ツールがこの競合を無視し、 アプリのより低いminSdkVersion値を維持しながらライブラリをインポートするには、 タグにoverrideLibrary属性を追加します。 の値は、メインマニフェストの minSdkVersionを上書きできるライブラリを示す1つまたは複数のライブラリパッケージ名(コンマ区切り)、 にすることができます。

例えば、あなたのアプリケーションのメインマニフェストには、このようなoverrideLibraryを適用した場合:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.app" 
      xmlns:tools="http://schemas.android.com/tools"> 
    <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2" 
      tools:overrideLibrary="com.example.lib1, com.example.lib2"/> 
... 

<uses-sdk>タグに関するエラーなしで合併し、マージされたマニフェストからminSdkVersion="2"を保持することができますそして、次のマニフェストアプリケーションのマニフェスト。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.lib1"> 
    <uses-sdk android:minSdkVersion="4" /> 
... 
関連する問題