2020-12-09 01:07:24 +01:00
|
|
|
# License of Makefile: Public Domain / CC0
|
|
|
|
.PHONY: $(shell sed -n -e '/^$$/ { n ; /^[^ .\#][^ ]*:/ { s/:.*$$// ; p ; } ; }' $(MAKEFILE_LIST))
|
|
|
|
.NOTPARALLEL: clean
|
|
|
|
.DEFAULT_GOAL := all
|
|
|
|
|
|
|
|
env-%:
|
|
|
|
@: $(if ${${*}},,$(error Environment variable $* not set))
|
|
|
|
####################################################################################
|
|
|
|
|
|
|
|
DIST_DIR = dist
|
|
|
|
MOVE = mv
|
|
|
|
|
2023-01-28 17:21:07 +01:00
|
|
|
all: $(DIST_DIR) spellcheck lint deptree test build aapt_dump_badging
|
2020-12-09 01:07:24 +01:00
|
|
|
|
|
|
|
####################################################################################
|
|
|
|
|
|
|
|
$(DIST_DIR):
|
|
|
|
mkdir -p ${DIST_DIR}
|
|
|
|
|
2023-01-28 17:21:07 +01:00
|
|
|
ANDROID_BUILD_TOOLS := $(shell test -n "$ANDROID_SDK_ROOT" && find "${ANDROID_SDK_ROOT}/build-tools" -iname "aapt" | sort -r | head -n1 | xargs dirname)
|
|
|
|
TOOL_SPELLCHECKING_ISPELL := $(shell command -v ispell 2> /dev/null)
|
|
|
|
|
|
|
|
FLAVOR := $(or ${FLAVOR},${FLAVOR},Atest)
|
|
|
|
|
|
|
|
.NOTPARALLEL: gradle gradle-analyze-log
|
2020-12-09 01:07:24 +01:00
|
|
|
gradle: env-ANDROID_SDK_ROOT
|
|
|
|
mkdir -p $(DIST_DIR)/log/
|
|
|
|
chmod +x gradlew
|
|
|
|
./gradlew --no-daemon --parallel --stacktrace $A 2>&1 | tee "$(DIST_DIR)/log/gradle.log"
|
|
|
|
@echo "-----------------------------------------------------------------------------------"
|
|
|
|
|
2023-01-28 17:21:07 +01:00
|
|
|
gradle-analyze-log:
|
2020-12-09 01:07:24 +01:00
|
|
|
mv "$(DIST_DIR)/log/gradle.log" "$(DIST_DIR)/log/gradle$A.log"
|
|
|
|
cat "$(DIST_DIR)/log/gradle$A.log" | grep "BUILD " | tail -n1 | grep -q "BUILD SUCCESSFUL in"
|
|
|
|
|
2023-01-28 17:21:07 +01:00
|
|
|
adb: env-ANDROID_SDK_ROOT
|
|
|
|
"${ANDROID_SDK_ROOT}/platform-tools/adb" $A 2>&1 | tee "$(DIST_DIR)/log/adb-$L.log"
|
|
|
|
|
|
|
|
aapt: env-ANDROID_SDK_ROOT
|
|
|
|
"${ANDROID_BUILD_TOOLS}/aapt" $A 2>&1 | grep -v 'application-label-' | tee "$(DIST_DIR)/log/aapt$L.log"
|
|
|
|
|
2020-12-09 01:07:24 +01:00
|
|
|
build:
|
|
|
|
rm -f $(DIST_DIR)/*.apk
|
2023-01-28 17:21:07 +01:00
|
|
|
$(MAKE) A="clean assembleFlavor$(FLAVOR) -x lint" gradle
|
|
|
|
find app -type f -newermt '-300 seconds' -iname '*.apk' -not -iname '*unsigned.apk' | xargs cp -R -t $(DIST_DIR)/
|
|
|
|
$(MAKE) A="-build" gradle-analyze-log
|
2020-12-09 01:07:24 +01:00
|
|
|
|
|
|
|
lint:
|
|
|
|
rm -Rf $(DIST_DIR)/lint
|
|
|
|
mkdir -p $(DIST_DIR)/lint/
|
|
|
|
$(MAKE) A="lintFlavorDefaultDebug" gradle
|
2023-01-28 17:21:07 +01:00
|
|
|
find app -type f -iname 'lint-results-*' | grep -v 'intermediates' | xargs cp -R -t $(DIST_DIR)/lint
|
|
|
|
$(MAKE) A="-lint" gradle-analyze-log
|
2020-12-09 01:07:24 +01:00
|
|
|
|
|
|
|
test:
|
|
|
|
rm -Rf $(DIST_DIR)/tests
|
|
|
|
$(MAKE) A="testFlavorDefaultDebugUnitTest -x lint" gradle
|
|
|
|
mkdir -p app/build/test-results/testFlavorDefaultDebugUnitTest && echo 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHRlc3RzdWl0ZSBuYW1lPSJkdW1teSIgdGVzdHM9IjEiIHNraXBwZWQ9IjAiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWVzdGFtcD0iMjAyMC0xMi0wOFQwMDowMDowMCIgaG9zdG5hbWU9ImxvY2FsaG9zdCIgdGltZT0iMC4wMSI+CiAgPHByb3BlcnRpZXMvPgogIDx0ZXN0Y2FzZSBuYW1lPSJkdW1teSIgY2xhc3NuYW1lPSJkdW1teSIgdGltZT0iMC4wMSIvPgogIDxzeXN0ZW0tb3V0PjwhW0NEQVRBW11dPjwvc3lzdGVtLW91dD4KICA8c3lzdGVtLWVycj48IVtDREFUQVtdXT48L3N5c3RlbS1lcnI+CjwvdGVzdHN1aXRlPgo=' | base64 -d > 'app/build/test-results/testFlavorDefaultDebugUnitTest/TEST-dummy.xml'
|
|
|
|
find app -type d -iname 'testFlavorDefaultDebugUnitTest' | xargs cp -R -t $(DIST_DIR)/
|
|
|
|
mv ${DIST_DIR}/testFlavorDefaultDebugUnitTest $(DIST_DIR)/tests
|
2023-01-28 17:21:07 +01:00
|
|
|
$(MAKE) A="-test" gradle-analyze-log
|
|
|
|
|
|
|
|
deptree:
|
|
|
|
$(MAKE) A="app:dependencies --configuration flavor$(FLAVOR)DebugRuntimeClasspath" gradle
|
|
|
|
$(MAKE) A="-dependency-tree" gradle-analyze-log
|
2020-12-09 01:07:24 +01:00
|
|
|
|
|
|
|
clean:
|
|
|
|
$(MAKE) A="clean" gradle
|
2023-01-28 17:21:07 +01:00
|
|
|
rm -Rf $(DIST_DIR) app/build app/flavor* .idea dist
|
|
|
|
find . -type f -iname "*.iml" -delete
|
2020-12-09 01:07:24 +01:00
|
|
|
$(MAKE) $(DIST_DIR)
|
2023-01-28 17:21:07 +01:00
|
|
|
@echo "-----------------------------------------------------------------------------------"
|
|
|
|
|
|
|
|
install:
|
|
|
|
$(MAKE) A="install -r $(DIST_DIR)/*.apk" L="install" adb
|
|
|
|
|
|
|
|
run:
|
|
|
|
$(MAKE) A="shell monkey -p $$(aapt dump badging $(DIST_DIR)/*.apk | grep package: | sed 's@.* name=@@' | sed 's@ .*@@' | xargs | head -n1) -c android.intent.category.LAUNCHER 1" L="run" adb
|
|
|
|
|
|
|
|
aapt_dump_badging:
|
|
|
|
$(MAKE) A="dump badging $(DIST_DIR)/*.apk" aapt
|
|
|
|
@echo "-----------------------------------------------------------------------------------"
|
|
|
|
|
|
|
|
spellcheck:
|
|
|
|
mkdir -p "$(DIST_DIR)/lint/"
|
|
|
|
ifndef TOOL_SPELLCHECKING_ISPELL
|
|
|
|
@echo "Tool ispell (spellcheck) not found in PATH. Spellcheck skipped." > "$(DIST_DIR)/lint/stringsxml-spellcheck.txt"
|
|
|
|
else
|
|
|
|
@echo "Use ispell for spellchecking the original values/strings.xml"
|
|
|
|
find . -iname "strings.xml" -path "*/main*/values/*" | head -n1 | xargs cat \
|
|
|
|
| grep "<string name=" | sed 's@.*">@@' | sed 's@</string>@@' | sed 's@\\n@ @g' | sed 's@\\@@g' \
|
|
|
|
| ispell -W3 -a | grep ^\& | sed 's@[0-9]@@g' | sort | uniq | cut -d, -f1-4 \
|
|
|
|
| sed 's@^..@- @' | column -t -s: \
|
|
|
|
> "$(DIST_DIR)/lint/stringsxml-spellcheck.txt"
|
|
|
|
@echo "\nPotential words with bad spelling:"
|
|
|
|
endif
|
|
|
|
@cat "$(DIST_DIR)/lint/stringsxml-spellcheck.txt"
|
|
|
|
@echo "-----------------------------------------------------------------------------------"
|
|
|
|
|