This tool makes it easy to analyze the composition of Android
applications that use Filament.
- Filament materials are shown in the treemap if `resgen --json` was
used in the build.
- The input path can be a so file, folder, or zip archive (apk or aar).
- If the path is a zip or folder, helps you find the file to analyze.
- The generated web report is a self-contained HTML file.
- Reports the gzipped size of all Filament materials.
For example, from a mac, you can generate a self-contained HTML file by
typing this from the Filament repo root:
./tools/zbloat/zbloat.py ./android/filament-android
open index.html
This tool uses Python, `nm`, and `objdump`.
The `nm` tool works slightly differently between macOS and Linux, so a
`Dockerfile` is provided that installs dependencies inside a Linux
container. This is also convenient if you do not have both versions of
Python on your system.
The easy way to use docker is to invoke the helper bash script. Simply
type `zbloat.sh [args...]` instead of `zbloat.py [args...]`. The first
time you run it, it will be slow but subsequent times will be fast.
Many thanks to Evan Martin for his interactive treemap widget.
33 lines
820 B
Docker
33 lines
820 B
Docker
# To run the image and mount the current directory:
|
|
# docker run --rm -it -v `pwd`:/filament -t zbloat
|
|
|
|
# Then, inside the container:
|
|
# ./tools/zbloat/zbloat.py my_favorite_app.apk
|
|
#
|
|
# To make this easier, see zbloat.sh
|
|
|
|
FROM ubuntu:focal
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
WORKDIR filament
|
|
|
|
RUN apt-get update && \
|
|
apt-get --no-install-recommends install -y \
|
|
apt-transport-https \
|
|
apt-utils \
|
|
build-essential \
|
|
python \
|
|
python3 \
|
|
curl \
|
|
gnupg2
|
|
|
|
RUN curl -sL https://deb.nodesource.com/setup_15.x | bash - && \
|
|
apt-get install -y nodejs
|
|
|
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
apt-get update && \
|
|
apt-get install -y yarn
|
|
|
|
RUN yarn global add webtreemap typescript
|