3

私はgoogle playサービス、retrofit、gson、glide、twitter、facebook sdkのような複数のライブラリを使用しているプロジェクトで働いています。だから私は各ライブラリの正確なサイズが私のアプリケーションで占めることを知りたいです。どうぞ、Androidスタジオのサイズを分析する方法があるかどうかを教えてください。私の要件に対するツールの提案やヒントは、私にとって非常に役立ちます。 build.gradleで使用している依存関係を以下のように投稿しています。Androidプロジェクトで依存関係として追加されたライブラリのサイズを計算する方法

compile('com.twitter.sdk.android:twitter:[email protected]') { 
     transitive = true; 
    } 
compile 'com.android.support:appcompat-v7:23.2.1' 
compile 'org.twitter4j:twitter4j-core:4.0.2' 
compile 'com.github.bumptech.glide:glide:3.6.1' 
compile 'com.google.android.gms:play-services-gcm:8.4.0' 
compile 'com.android.support:support-v4:23.2.0' 

:私は多くのメモリを占有しているライブラリを除去することにより、自分のアプリケーションのAPKのサイズを小さくするために、この報告書を分析しています。

私は過去数日間このソリューションに完全に固執しています。私は多くの検索をしましたが、私のプロジェクトでライブラリの正確なサイズを計算するための最適化されたアプローチを見つけることができませんでした。

助けてください。前もって感謝します。

+1

あなたのアプリに入ってしまえば、すべてのライブラリがAPKとマージされるため、それらを分割することは困難です。大まかな見積もりを得るために、JARまたはAARファイルのサイズと推移的な依存関係のサイズを調べることができます。例えば、[glideは〜465KBと思われます](http://mvnrepository.com/artifact/com.github.bumptech.glide/glide/3.6.1)、 'support-v4:23.2.1'は〜1.2ですMB( 'support-annotations'の依存関係のために〜19KB)。 – CommonsWare

+0

あなたは完全に裸のAndroidプロジェクトに一度に1つの依存関係を追加し、APKを生成し、それぞれの違いを計算することができます。 – fractalwrench

+0

@fractalwrenchそれはまあまあです。しかし、やはり退屈なプロセスであり、何度も繰り返しプロジェクトを構築しなければなりません。 – Chandru

答えて

3

ない、それはそれはあなたが探している何かが、それは何らかの形で役立つことを確認します。

task depsize { 
    doLast { 
     final formatStr = "%,10.2f" 
     final conf = configurations.default 
     final size = conf.collect { it.length()/(1024 * 1024) }.sum() 
     final out = new StringBuffer() 
     out << 'Total dependencies size:'.padRight(45) 
     out << "${String.format(formatStr, size)} Mb\n\n" 
     conf.sort { -it.length() } 
      .each { 
       out << "${it.name}".padRight(45) 
       out << "${String.format(formatStr, (it.length()/1024))} kb\n" 
      } 
     println(out) 
    } 
} 

をタスクは、すべての依存関係の総和を出力し、サイズの降順でソートし、キロバイトでサイズでそれらを出力します。

+0

こんにちは@medvedev。答えてくれてありがとう。私はまったく同じものを探していた。私はこのコードをbuild.gradle(app)に挿入しましたが、ログには何も印刷されません。また、build.gradle(project)でこれらをコピーしてみました。 – Chandru

+0

それは変です。私はbuild.gradleからこのコードをコピーしました。 出力を得るために、私は "gradle depsize"を実行します –

+0

しかし、それは私の非アンドロイドビルドのために働いた。アンドロイドで試してみませんか?そのために残念。 –

3
task (depsize) << { 
def size = 0; 
configurations._debugApk.collect { it.length()/(1024 * 1024) }.each { size += it } 
println "Total dependencies size: ${Math.round(size * 100)/100} Mb" 

configurations 
     ._debugApk 
     .sort { -it.length() } 
     .each { println "${it.name} : ${Math.round(it.length()/(1024) * 100)/100} kb" } 
} 

これをあなたのアプリケーションモジュールgradle.buildに入れてみると、gradleによって直接実行できます。あなたはすべてのposissible configuratuionsを見たい場合は追加します。

configurations 
     .findAll() 
     .each { println "${it.name}" } 
+0

返信いただきありがとうございます。これをどこに追加するか教えてください。一度それが完了したら私は答えを受け入れるので、この要件をすべて探している他の人にとっては非常に役に立ちます。 – Chandru

+0

私は自分の答えを更新しました...あなたはあなたのアプリケーションモジュールの最後にそれを置くことができますgradle.build – David

3

最も簡単な方法は、あなただけのコンパイル文を貼り付け、あなたはそれについてのすべてのサイズの詳細を取得http://www.methodscount.com/と呼ばれるウェブサイトを使用することです。

例は、私がcom.github.paolorotolo貼り付ける場合:appintro:4.1.0それにを、私はこの結果を得る:

enter image description here

それはいくつかのライブラリのためにほとんどのために動作しません。ケースのうち、それはジョブです。

関連する問題