aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/bin/android_build_universal_viewer
blob: f98eeb80881a38cc0a4ccab5fe0dbea9e5741059 (plain)
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
#! /bin/sh

# Copyright 2018 Google Inc.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

make_gn() {
    #TODO: make this more configurable
    cat << EOF
    target_cpu = "$ARCH"
    is_debug = false
    ndk = "$ANDROID_NDK"
    ndk_api = 26
EOF
}

main() {
    APP="$1"
    LIB="$2"

    ANDROID_NDK="$(cd "$ANDROID_NDK"; pwd)"
    ANDROID_HOME="$(cd "$ANDROID_HOME"; pwd)"

    cd "$(dirname "$0")/../../.."

    python tools/git-sync-deps
    git clean -fxd platform_tools/android/apps/$APP
    mkdir -p platform_tools/android/apps/${APP}/src/main/assets
    cp -a resources platform_tools/android/apps/${APP}/src/main/assets/

    for ARCH in arm arm64 x86 x64; do
        BUILD=out/${APP}-$ARCH
        mkdir -p "$BUILD"
        make_gn > "${BUILD}/args.gn"
        bin/gn gen $BUILD
        ninja -C $BUILD $LIB
        case $ARCH in
            arm)    NATIVE=armeabi-v7a ;;
            arm64)  NATIVE=arm64-v8a   ;;
            x86)    NATIVE=x86         ;;
            x64)    NATIVE=x86_64      ;;
            *)      usage              ;;
        esac
        DST=platform_tools/android/apps/$APP/src/main/libs/$NATIVE
        mkdir -p $DST
        cp -a $BUILD/$LIB $DST/$LIB
    done
    (
        cd platform_tools/android
        apps/gradlew --daemon -p apps/$APP -P suppressNativeBuild :${APP}:assembleUniversalDebug
    )

    mkdir -p out/${APP}-universal
    cp platform_tools/android/apps/$APP/build/outputs/apk/${APP}-universal-debug.apk \
        out/${APP}-universal/$APP-universal-debug.apk
    ls -l out/${APP}-universal/$APP-universal-debug.apk
}

usage() {
    cat >&2 <<EOM
The environment variables ANDROID_NDK and ANDROID_HOME must be set to the
locations of the Android NDK and SDK.  Current values:

    ANDROID_NDK="$ANDROID_NDK"
    ANDROID_HOME="$ANDROID_HOME"

Additionally, \`python\` and \`ninja\` should be in your path.

EOM
    exit 1
}

[ -d "$ANDROID_NDK"  ] || usage
[ -d "$ANDROID_HOME" ] || usage
command -v ninja  > /dev/null || usage
command -v python > /dev/null || usage

set -x # Verbose
set -e # Exit immediately

main viewer libviewer.so