2012-03-01 11 views
10

私はAndroidで使用するための最小限のutilsライブラリを作成する必要があります。私は、Apacheのコモンズライブラリ(IOUtilsStringUtilsなど)からいくつかのメソッドを使用しています。しかし、それぞれのそのような使い方は、私はTomcatの下に絶対に許容可能である(war年代がmamootサイズされているとにかく)が、Androidのプロジェクトのために絶対に容認できないライブラリ全体(commons-langcommons-ioなど)をインポートできます。使用するクラスのみで最小化されたjarを生成

だから、私の目的は、1瓶に依存関係から全て使用されるクラスをパックすること、である - しかし、クラスが必要とされているだけということ。私は一度、その仕事をしてくれたメイヴェンのプラグインと連絡を取ったことを覚えています。残念ながら私はその名前を覚えていないし、Google経由で見つけることもできません。

だから、あなたは依存関係のように最小化を行いますMavenのプラグイン、または同じことをするでしょう任意のスタンドアロンツールを知っていますしてください?

答えて

0

すみません、多分私は明らかに疑問を理解できませんでした。難読化ツール(つまり、ProGuard)はそうすることができますか?いくつかのJARを1つにパックし、未使用のクラスを取り除きます。難読化/最適化(不要な副作用を防ぐため)が必要ない場合は、それらを無効にして、「縮小」フェーズを有効にします。

+0

ProGuardはすでにAndroid SKDに統合されていることがわかりましたので、私の要件を満たしているかどうかは間違いありません。 –

+0

私はそのようなパッケージングが署名されたライブラリJARを壊すことを知っています。重大な欠点かもしれません。 – Mersenne

-3

私はプロジェクトをJAR化するEclipseを使用する場合、それは JARINGは:)ながら、多分それが有用であることを行うにはいくつかのオプションを与えると思います。

また、あなたは、カスタムライブラリの下に使用されるライブラリのクラスを収集し、プロジェクトにライブラリを作成し、このユーザーを含めることができます。

+0

これは私がするためのツールを必要とするものである:ここでは、私は私の単一のjar内のJDBCドライバが含まれるようにMavenを作った方法です。私はそれを手動で行うことができることを知っています。 –

0

一般的には、自動的にアプリケーションによって使用されているすべてのクラスを選択することはできません。 Class.forName(String name)でできることや、依存性注入コンテナを使用して外部構成ファイルに型を宣言しているかどうかを考えてください。

+0

私はそれを認識していますが、これはリフレクションを使用している場合のみです。 AFAIRこのツールはリフレクションが存在しないときに機能していましたが、本当にそれを見たか、それとも夢だったかはわかりません;) –

+0

リフレクションを使うときだけでなく、URLからクラスをロードすることもできますクラスはクラスパス上のクラスに依存する可能性があります。クラッシュするだろう。 –

+0

これはコンパイラが見ないようなコードロードでも非常に便利です。最小限のjarファイルを作成したい人は、自動的には見つからないクラスをホワイトリストに登録することができます。 –

5

あなたが覚えていないmavenプラグインはおそらくApache Maven Shade Pluginです。minimizeJarオプションがあります。 Andreas_Dが気付いたように、これにはクラスが含まれず、Class.forNameがロードされているので、必要なのはimplicity say in configurationです。

<filter> 
    <artifact>net.sourceforge.jtds:jtds</artifact> 
    <includes> 
     <include>**</include> 
    </includes> 
</filter> 
関連する問題