forked from mattkwan-zz/android-xserver
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathMakefile
103 lines (84 loc) · 5.23 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Author: Daniel Giritzer ([email protected])
## Workdir
WORKDIR=$(shell pwd)
PROJNAME=au.com.darkside.xdemo
LIBNAME=au.com.darkside.xserver
# Version Info
VER_CODE=31
VER_NAME=1.31
MIN_SDK=21
TARGET_SDK=29
## Java/Android Compiler Settings (defaults are valid for debian buster)
# Can be overridden by environment variables
JAVA_HOME:=$(if $(JAVA_HOME),$(JAVA_HOME),/usr/lib/jvm/java-1.11.0-openjdk-amd64/)
ANDROID_SDK_ROOT:=$(if $(ANDROID_SDK_ROOT),$(ANDROID_SDK_ROOT),/usr/lib/android-sdk)
ANDROID_BUILD_TOOLS_VERSION:=$(if $(ANDROID_BUILD_TOOLS_VERSION),$(ANDROID_BUILD_TOOLS_VERSION),debian)
ANDROID_PLATORM_VERSION:=$(if $(ANDROID_PLATORM_VERSION),$(ANDROID_PLATORM_VERSION),23)
ANDROID_PLATORM=android-$(ANDROID_PLATORM_VERSION)
ANDROID_CP=$(ANDROID_SDK_ROOT)/platforms/$(ANDROID_PLATORM)/android.jar
## Keystore Settings
ANDROID_KEYSTORE_PATH=debug.keystore
ANDROID_KEYSTORE_NAME=androiddebugkey
ANDROID_KEYSTORE_PW=android
## Tools
ADB=$(ANDROID_SDK_ROOT)/platform-tools/adb
AAPT=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/aapt
DX=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/dx
ZIPALIGN=$(ANDROID_SDK_ROOT)/build-tools/$(ANDROID_BUILD_TOOLS_VERSION)/zipalign
JAVAC=$(JAVA_HOME)/bin/javac
JARSIGNER=$(JAVA_HOME)/bin/jarsigner
# Android Sources and resources
ANDROID_SRC=$(WORKDIR)/demo/src/main
ANDROID_LIB=$(WORKDIR)/library/src/main
ANDROID_SOURCES=$(shell find $(WORKDIR) -name *.java)
ANDROID_NATIVE_LIBS=$(shell cd $(ANDROID_SRC) && find ./jniLibs -name *.so)
ANDROID_NATIVE_LIBS_AAPT_CMD=$(subst ./jniLibs,lib,$(addprefix && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned ,$(ANDROID_NATIVE_LIBS)))
# out
OUT=$(WORKDIR)/demo/build/outputs
GENDIR_ANDROID=$(OUT)/gen
CLASSDIR_ANDROID=$(OUT)/class
NATIVELIBDIR_ANDROID=$(OUT)/lib
OUT_ANDROID=$(OUT)/apk
all: android_release
android_debug: clean prepare_dirs
$(AAPT) package -f -m --debug-mode --version-code $(VER_CODE) --version-name $(VER_NAME) --min-sdk-version $(MIN_SDK) --target-sdk-version $(TARGET_SDK) -J $(GENDIR_ANDROID) --auto-add-overlay -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_LIB)/res -S $(ANDROID_SRC)/res -I $(ANDROID_CP) --extra-packages $(LIBNAME)
$(JAVAC) -g -classpath $(ANDROID_CP) -sourcepath 'src:$(GENDIR_ANDROID)' -d '$(CLASSDIR_ANDROID)' -target 1.7 -source 1.7 $(ANDROID_SOURCES)
$(DX) --dex --output=$(GENDIR_ANDROID)/classes.dex $(CLASSDIR_ANDROID)
$(AAPT) package -f --debug-mode --version-code $(VER_CODE) --version-name $(VER_NAME) --min-sdk-version $(MIN_SDK) --target-sdk-version $(TARGET_SDK) -M $(ANDROID_LIB)/AndroidManifest.xml -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_LIB)/res -S $(ANDROID_SRC)/res -A $(ANDROID_SRC)/assets -I $(ANDROID_CP) -F $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned
cd $(GENDIR_ANDROID) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned classes.dex
cd $(NATIVELIBDIR_ANDROID)/../ $(ANDROID_NATIVE_LIBS_AAPT_CMD)
$(JARSIGNER) -keystore $(ANDROID_KEYSTORE_PATH) -storepass '$(ANDROID_KEYSTORE_PW)' $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $(ANDROID_KEYSTORE_NAME)
$(ZIPALIGN) -f 4 $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $(OUT_ANDROID)/$(PROJNAME).apk
android_release: clean prepare_dirs
$(AAPT) package -f -m --version-code $(VER_CODE) --version-name $(VER_NAME) --min-sdk-version $(MIN_SDK) --target-sdk-version $(TARGET_SDK) -J $(GENDIR_ANDROID) --auto-add-overlay -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_LIB)/res -S $(ANDROID_SRC)/res -I $(ANDROID_CP) --extra-packages $(LIBNAME)
$(JAVAC) -classpath $(ANDROID_CP) -sourcepath 'src:$(GENDIR_ANDROID)' -d '$(CLASSDIR_ANDROID)' -target 1.7 -source 1.7 $(ANDROID_SOURCES)
$(DX) --dex --output=$(GENDIR_ANDROID)/classes.dex $(CLASSDIR_ANDROID)
$(AAPT) package -f --version-code $(VER_CODE) --version-name $(VER_NAME) --min-sdk-version $(MIN_SDK) --target-sdk-version $(TARGET_SDK) -M $(ANDROID_LIB)/AndroidManifest.xml -M $(ANDROID_SRC)/AndroidManifest.xml -S $(ANDROID_LIB)/res -S $(ANDROID_SRC)/res -A $(ANDROID_SRC)/assets -I $(ANDROID_CP) -F $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned
cd $(GENDIR_ANDROID) && $(AAPT) add $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned classes.dex
cd $(NATIVELIBDIR_ANDROID)/../ $(ANDROID_NATIVE_LIBS_AAPT_CMD)
$(JARSIGNER) -keystore $(ANDROID_KEYSTORE_PATH) -storepass '$(ANDROID_KEYSTORE_PW)' $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $(ANDROID_KEYSTORE_NAME)
$(ZIPALIGN) -f 4 $(GENDIR_ANDROID)/$(PROJNAME).apk.unaligned $(OUT_ANDROID)/$(PROJNAME).apk
prepare_dirs:
mkdir -p $(GENDIR_ANDROID)
mkdir -p $(CLASSDIR_ANDROID)
mkdir -p $(OUT_ANDROID)
mkdir -p $(NATIVELIBDIR_ANDROID)
cp -rf $(ANDROID_SRC)/jniLibs/* $(NATIVELIBDIR_ANDROID)
generate_keystore:
keytool -genkey -v -keystore $(ANDROID_KEYSTORE_PATH) -storepass $(ANDROID_KEYSTORE_PW) -alias $(ANDROID_KEYSTORE_NAME) -keypass $(ANDROID_KEYSTORE_PW) -keyalg RSA -keysize 2048 -validity 10000
install:
adb install $(OUT_ANDROID)/$(PROJNAME).apk
uninstall:
adb uninstall $(PROJNAME)
run:
adb shell monkey -p $(PROJNAME) -c android.intent.category.LAUNCHER 1
kill:
adb shell am force-stop $(PROJNAME)
remote_screen:
scrcpy --render-driver=software --disable-screensaver --stay-awake &
deploy: android_debug kill uninstall install run
clean:
rm -rf $(GENDIR_ANDROID)
rm -rf $(CLASSDIR_ANDROID)
rm -rf $(NATIVELIBDIR_ANDROID)
rm -rf $(OUT_ANDROID)