-
Notifications
You must be signed in to change notification settings - Fork 1
/
compile.sh
executable file
·221 lines (196 loc) · 5.32 KB
/
compile.sh
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#! /bin/sh
set -e
# Read the Android Wiki http://wiki.videolan.org/AndroidCompile
# Setup all that stuff correctly.
# Get the latest Android SDK Platform or modify numbers in configure.sh and libvlc/default.properties.
while [ $# -gt 0 ]; do
case $1 in
help|--help|-h)
echo "Use -a to set the ARCH:"
echo " ARM: armeabi-v7a, armeabi, armeabi-v5, armeabi-nofpu"
echo " ARM64: arm64-v8a"
echo " X86: x86, x86_64"
echo " MIPS: mips, mips64."
echo "Use --release to build in release mode"
echo "Use -s to set your keystore file and -p for the password"
echo "Use -t to get an AndroidTv build"
echo "Use -c to get a ChromeOS build"
exit 0
;;
a|-a)
ANDROID_ABI=$2
shift
;;
-t)
ANDROID_TV=1
;;
-c)
CHROME_OS=1
;;
-r|release|--release)
RELEASE=1
;;
-s|--signature)
KEYSTORE_FILE=$2
shift
;;
-p|--password)
PASSWORD_KEYSTORE=$2
shift
;;
run)
RUN=1
;;
esac
shift
done
ANDROID_NDK="/Users/sensemilla/ndk"
ANDROID_SDK="/Users/sensemilla/sdk"
if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
echo "You must define ANDROID_NDK, ANDROID_SDK before starting."
echo "They must point to your NDK and SDK directories.\n"
exit 1
fi
if [ -z "$ANDROID_ABI" ]; then
echo "*** No ANDROID_ABI defined architecture: using ARMv7"
ANDROID_ABI="armeabi-v7a"
fi
#############
# FUNCTIONS #
#############
checkfail()
{
if [ ! $? -eq 0 ];then
echo "$1"
exit 1
fi
}
##########
# GRADLE #
##########
if [ ! -d "gradle/wrapper" ]; then
echo "Downloading gradle"
GRADLE_VERSION=2.2.1
GRADLE_URL=http://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL}
checkfail "gradle: download failed"
unzip gradle-${GRADLE_VERSION}-all.zip
checkfail "gradle: unzip failed"
cd gradle-${GRADLE_VERSION}
./bin/gradle wrapper
checkfail "gradle: wrapper failed"
./gradlew -version
checkfail "gradle: wrapper failed"
cd ..
mkdir -p gradle
mv gradle-${GRADLE_VERSION}/gradle/wrapper/ gradle
mv gradle-${GRADLE_VERSION}/gradlew .
chmod a+x gradlew
rm -rf gradle-${GRADLE_VERSION}-all.zip gradle-${GRADLE_VERSION}
fi
####################
# Configure gradle #
####################
if [ -z "$KEYSTORE_FILE" ]; then
KEYSTORE_FILE="$HOME/.android/debug.keystore"
STOREALIAS="androiddebugkey"
else
if [ -z "$PASSWORD_KEYSTORE" ]; then
echo "No password"
exit 1
fi
rm -f gradle.properties
STOREALIAS="vlc"
fi
if [ ! -f gradle.properties ]; then
echo keyStoreFile=$KEYSTORE_FILE > gradle.properties
echo storealias=$STOREALIAS >> gradle.properties
if [ -z "$PASSWORD_KEYSTORE" ]; then
echo storepwd=android >> gradle.properties
fi
fi
if [ ! -f local.properties ]; then
echo sdk.dir=$ANDROID_SDK > local.properties
echo ndk.dir=$ANDROID_NDK >> local.properties
fi
####################
# Fetch VLC source #
####################
TESTED_HASH=ecfd0b7
if [ ! -d "vlc" ]; then
echo "VLC source not found, cloning"
git clone git://git.videolan.org/vlc.git vlc
checkfail "vlc source: git clone failed"
else
echo "VLC source found"
cd vlc
if ! git cat-file -e ${TESTED_HASH}; then
cat << EOF
***
*** Error: Your vlc checkout does not contain the latest tested commit: ${TESTED_HASH}
***
EOF
exit 1
fi
cd ..
fi
############
# Make VLC #
############
echo "Configuring"
OPTS="-a ${ANDROID_ABI}"
if [ "$RELEASE" = 1 ]; then
OPTS="$OPTS release"
fi
if [ "$CHROME_OS" = 1 ]; then
OPTS="$OPTS -c"
fi
./compile-libvlc.sh $OPTS
##################
# Compile the UI #
##################
PLATFORM="Vanilla"
BUILDTYPE="Debug"
if [ "$RELEASE" = 1 ]; then
BUILDTYPE="Release"
fi
if [ "$ANDROID_TV" = 1 ]; then
PLATFORM="Tv"
elif [ "$CHROME_OS" = 1 ]; then
PLATFORM="Chrome"
fi
if [ "$ANDROID_ABI" = "armeabi-v5" ]; then
GRADLE_ABI="ARMv5"
elif [ "$ANDROID_ABI" = "armeabi" ]; then
GRADLE_ABI="ARMv6fpu"
elif [ "$ANDROID_ABI" = "armeabi-nofpu" ]; then
GRADLE_ABI="ARMv6nofpu"
elif [ "$ANDROID_ABI" = "arm64-v8a" ]; then
GRADLE_ABI="ARMv8"
elif [ "$ANDROID_ABI" = "x86" ]; then
GRADLE_ABI="x86"
elif [ "$ANDROID_ABI" = "x86_64" ]; then
GRADLE_ABI="x86_64"
elif [ "$ANDROID_ABI" = "mips" ]; then
GRADLE_ABI="MIPS"
elif [ "$ANDROID_ABI" = "mips64" ]; then
GRADLE_ABI="MIPS64"
else
GRADLE_ABI="ARMv7"
fi
TARGET="assemble${PLATFORM}${GRADLE_ABI}${BUILDTYPE}"
PASSWORD_KEYSTORE="$PASSWORD_KEYSTORE" ./gradlew $TARGET
#######
# RUN #
#######
if [ "$RUN" = 1 ]; then
export PATH=${ANDROID_SDK}/platform-tools/:$PATH
adb wait-for-device
if [ "$RELEASE" = 1 ]; then
adb install -r vlc-android/build/outputs/apk/vlc-android-vanilla-release.apk
adb shell am start -n org.videolan.vlc/org.videolan.vlc.gui.MainActivity
else
adb install -r vlc-android/build/outputs/apk/vlc-android-vanilla-debug.apk
adb shell am start -n org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity
fi
fi