blog

アプリ減量の道

仕事の後、通りを歩いて家に帰ると、北京の夜はまだ非常に美しいですが、昼間の交通渋滞の少ない、静かな甘いの残りの部分は、道路のライトもすべて点灯し、提灯の文字列のように、街の四隅にぶら下がって、北京は、...

Sep 12, 2020 · 6 min. read
シェア



仕事の後、通りを歩いて家に帰る、東京の夜はまだ非常に美しいですが、日中の渋滞が少なく、静かな甘い残りの部分は、道路上のライトもすべて点灯し、提灯の文字列のように、都市のすべての方向にぶら下がっている、東京、またはかなり良い....忘れて、これ以上の感情、急いで家に帰る、家にはまだステップフォード妻があります....へへへ...。

やっと家に着きました、道は本当に涼しいです、ああ、妻はベッドに行ったはずです、良い、だから私はキングオブグローリーをプレイする誰も私を邪魔しない。ちょうどスツールに座って、手を操作する準備ができて。突然、声が表示されました: "死んだ幽霊、戻ってくるのがこんなに遅いの?"まあ、今日と新しいことを学ぶ、無意識のうちに遅れて、もう少し勉強し、改善する能力、賃金を増加させるのではなく、彼の妻のためにもっと新しい服を買うために?".妻は言った: "その後、あなたは毎日とても忙しいですが、あなたは疲れを感じませんか?"、"疲れたああ、私も仕事をしたくない、あなたはああ私をサポートしています!"、妻は言った:"その後、あなたはよく働くだろう......".

ソファに座って、昼間の仕事を考えると、通常は笑顔のリーダーシップ今日は人を変えたようで、私を呼んで、小さな陳ああ、あなたは食料品のAppを購入する米国のグループの人々を見て、わずか20M、なぜ120MにAppは、減量を減らすためにAppを作る方法はありませんか?私は言った、 "あなたは正しい人を探している、アプリ痩身私はより熟練している、私に一週間を与え、あなたに満足のいく答えを与える"、リーダーは満足そうにうなずき、彼の魅力的な笑顔を明らかにしました。

次に私はこの区域の必要性を持っているパートナーのための App の細くの原則そして方法を提供し、この分け前がまたあなたの生命のあらゆる所で微笑に会うことができることを望みます。

痩身とは何ですか?

一般的にアプリのスリミングとは、アプリのサイズを100Mから20Mに縮小することです。

減量の意義?

何をするにも、まずその意義を知る必要があります。では、アプリのスリミングの意義は何でしょうか?

1、アプリの同じ機能に対して、1つは2,000万円、1つは1億円で、それなら2,000万円を選びます。

2、会社から見れば、アプリをダウンロードする一般の顧客が多く、最終的に変装してトラフィックに変換され、トラフィックはお金です。

3は、時間やサードパーティのプラットフォームは、華為技術(ファーウェイ)の携帯電話などのJitterbugソフトウェアのインストールが必要ですが、あなたは100Mを超えることはできませんが、間伐にこの時間は、要件を確認します。

間引きはどのように行われますか?

アプリをスリム化するには、まずアプリのコンポーネントを知り、次に個々のパーツをスリム化する必要があります。

Apk

apkは実は一つで、zipパッケージの中に以下のような部品があります:



1, コード関連: classes.dex

2, リソース関連: res, alerts, resources.arsc

3, soファイル: libディレクトリ

Apkの構成がわかったら、Apkを解析したいけど、どうやって解析するの?解析ツールの導入が必要

Apk分析ツール

1、apktools

2、apkを解析

3、解析サイトhttps://nimbledroid.com/

1、このバージョンと次のバージョンの違いを分析します。

2、どんなページが入っているか、どんなサードパーティライブラリが入っているかを分析します。

apkをASにドラッグするだけ。

apkの構成、apk解析ツールを知った上で、apkの間引きアプローチを紹介します。

Apk痩身アプローチ

コード

  1. コードの難読化
  2. 三部ライブラリ処理
  3. 無駄なコードを削除
リソース
  1. 冗長なリソース
  2. イメージ圧縮
  3. リソースの混乱
だから
  1. so
  2. より良いプログラム
  3. その他のプログラム



これらのアプローチについて、以下で詳しく説明します。

コード

1.コードの難読化とは?

コードを、機能的には等価だが読みにくい形に変換することです。

2、コード難読化の機能とは?

1)、コード内の要素を意味のない名前に変更し、コンテキストなどをaに。

2)、コードの一部を記述するロジックを理解することはより困難です。

3)、難読化は、apkのサイズ削減を可能にします。

3、コード難読化どのように使用するには?

Android SDKはツール、Javaクラス圧縮と難読化ツールクラスを統合しました。

あなたは、要素名を短くすることができ、冗長なコードを削除し、コード逆コンパイルの難易度を向上させます。

2)、対応するルールの設定でプロガードルール。

1、どのような3ウェイライブラリの問題になりますか?

たとえば、大規模なプロジェクト、あなたはPicassoのフレームワークを導入し、私はGlideのフレームワークを導入したので、三方ライブラリの重複は、パッケージのサイズも大きいです。

2、どのように3ウェイライブラリに対処するには?

1)、基本的なライブラリを統一するだけでなく、定期的な訓練のためのグループにする必要があります。

2)、小さなライブラリを選択します。

3)、コードの必要な部分のみの導入:オンデマンド導入、フレスコのWebpサポートなどの完全な導入ではありません。

1、無駄なコードの現状?

プロジェクトの繰り返し開発では、プロジェクトはいくつかの無駄なコードを持っているバインドされている、いくつかのコードは、それが有用であるかどうかわからないので、削除する勇気はありません。

2、では、どのようにプロジェクトの無駄なコードを削除するには?

1) アクティビティであれば、onCreateメソッドにバインドされているので、onCreateメソッドに統計情報を追加します。

リソース

1、リソースの間伐の現状?

プロジェクトの反復開発では、リソースファイルもコードのようになります、多くの無駄なファイルがあり、いくつかのファイルは、それが有用であるかどうかわからないので、簡単にそれを削除するために行くことはできません。

2、だからどのように無駄なリソースである検出するには?

フォルダ-リファクタ-未使用のリソースを削除するを右クリックします。

注:この方法は純粋なネイティブプロジェクトに適用され、それがクロスプラットフォームプロジェクトであれば、Weex、RNは、非常に正確ではないかもしれません。

1、プロジェクト内のイメージは?

プロジェクトに含まれるイメージは非常に多く、一般的に大きいので、それらを最適化することで、利得が高くなります。

2、イメージ圧縮の方法は?

1)このサイトはイメージ圧縮を行うことができます https://tinypng.com/



利得が比較的大きく、表示の面で違いがないことを参照してください。

2):あなたは、イメージのバッチ圧縮することができ、非常に良いです。

3) イメージにWebp形式を使用すると小さくなります。

PNG形式の場合、それは可逆形式であり、JPGは非可逆形式であり、イメージの色の処理でJPGは、時には中間色のいくつかの違いを識別するために肉眼の一部を削除します比較的小さいので、イメージの場合には、より鮮やかな、より多くの色、Png形式のイメージがはるかに> JPG形式のイメージです。

1、リソースを混乱させる方法は?

1、イメージを一枚だけコピーして、例えばxxhdpiの下に置いて、それから異なる解像度に適応します。

So

so

1、soの現状は?

androidにはx86、armなど7種類のCPUアーキテクチャがあります。理論的には、アーキテクチャの異なる携帯電話は、異なるsoライブラリに対応し、その実行効率が最も良いのですが、これはパッケージサイズの肥大化につながります。

2、soを最適化するには?

build.gradleでsoのアーキテクチャを設定します。

abiFilters "armeabi-v7a"

例えば、armeabiアーキテクチャのsoとarmeabi-v7aアーキテクチャのsoをarmeabiフォルダの下に置き、コードのCPUタイプに応じて対応するアーキテクチャのsoをロードします。

1、so動的配布、ビジネスコードの実行前に、インターネットからsoファイルの動的配布。

この方法は、インターネットから比較的大きなファイルをダウンロードすることをお勧めしませんが、ビジネスの実行に影響を与える、ダウンロードに失敗することがあります。

2、プラグインは、コード構造を調整するために、各関数は、そのapkのパッケージサイズがはるかに小さくなる、インターネットダウンから利用可能であり、大規模なアプリは、プラグインを使用し、プラグインの使用は、パッケージサイズを最適化します。

ライフ・センス

Appの減量の謎が浸透している可能性がありますが、自分の減量はまだ道である....

連絡先

これについてのご質問は、あなたが答えるのを助けるために自由に、私に連絡することができます。

QQ:739682896









Read next

Binderにおける権限制御

このコードは実際に何をするのでしょうか?いつもペアでやってくるので、今日はそれを見つけましょう。まず最初に、このコードは実際にはBinderのパーミッション制御機構です。 現在のスレッドでは、IPCのロゴの到着をリセットするためにされ、呼び出しが処理され、呼び出し元は、インターフェイスの他のオブジェクトのプロセスを呼び出す必要があります...

Sep 12, 2020 · 5 min read