summaryrefslogtreecommitdiff
path: root/build_android.sh
blob: 70d6b4df41484f93b114a106ef6cc3c4d3267ae9 (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
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
#!/bin/bash

build_debug() {
        echo "*********** Building Debug Build **************"
        rm -rf debug_files 2>/dev/null
        mkdir debug_files
        ionic cordova build android
        # adding back wkwebview clears platform debug directory later
        cp platforms/android/build/outputs/apk/debug/android-debug.apk debug_files
}


build_release() {
        echo "*********** Building Release Build **************"
        echo "----> Only building native. Not building crosswalk anymore due to compatibility issues <----------"
        # App signining credentials in this file
        NINJAKEYSTORE=~/Desktop/zmNinja.keystore

        if [ ! -f "$NINJAKEYSTORE" ]; then
                echo "zmNinja keystore not found"
                exit
        fi

       BUILD_MODE="native"
        rm -rf release_files 2>/dev/null
        mkdir release_files


        ############ Native web view build ###############################

            echo "${ver}: Building Release mode for android 5+..."
            echo "--------------------------------------------"
            
        #    No longer needed as we are not supporting Xwalk
        #    echo "Removing android and re-adding..."
        #    cordova platform remove android
        #    cordova platform add android@6.4.0

           #clean up past build stuff
        #    echo "Adding default browser..."
        #    cordova plugin remove cordova-plugin-crosswalk-webview

            # use the right plugin for SSL certificate mgmt
        #    cordova plugin remove cordova-plugin-crosswalk-certificate-pp-fork
        #    cordova plugin add cordova-plugin-certificates
            cp "$NINJAKEYSTORE" platforms/android/

            # Make sure native builds are only deployed in devices >= Android 5
            cordova build android --release -- --minSdkVersion=21 --versionCode=${ver}

            # copy build to release folder and sign
            cp platforms/android/build/outputs/apk/release/android-release-unsigned.apk release_files/
            echo "Copied files to release_files"

            cd release_files/
            jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../platforms/android/zmNinja.keystore android-release-unsigned.apk zmNinja
            ~/Library/Android/sdk/build-tools/25.0.2/zipalign -v 4 android-release-unsigned.apk zmNinja.apk
            rm -f android-release-unsigned.apk 
            cd ..

         # Do a phone perm check

            ./checkperms.sh release_files/zmNinja.apk
            echo "*** Phone State Check:"
            ./checkperms.sh release_files/zmNinja.apk | grep PHONE_STATE

            echo "***VERSION CODE CHECKS:"
            for f in release_files/*; do
                echo "$f:"
                `echo $ANDROID_HOME`/build-tools/23.0.1/aapt dump badging $f | grep versionCode
                `echo $ANDROID_HOME`/build-tools/23.0.1/aapt dump badging $f | grep native-code
            done

  }


# parse arguments
# credit: https://stackoverflow.com/a/14203146/1361529
MODE="release"
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
    -d|--debug)
    MODE="debug"
    shift # past argument
    ;;
    -r|--release)
    MODE="release"
    shift # past argument
    ;;
    *)    # unknown option
    shift # past argument
    ;;
esac
done  

./electron_js/sync_versions.sh

APPVER=`cat config.xml | grep "widget " | sed 's/.* version=\"\([^\"]*\)\" xmlns.*/\1/'`
# multipleApk adds 2 and 4 in Xwalk builds for arm and x86 respectively
ver_pre5=${APPVER//.} 
ver=${APPVER//.}9


echo "About to build version: $APPVER ($MODE)"
read -p "Press any key..."

echo "Removing wkwebview, adding certificate fork..."
cordova plugin remove cordova-plugin-ionic-webview > /dev/null 2>&1
cordova plugin add cordova-plugin-certificates-pp-fork > /dev/null 2>&1


if [ "${MODE}" = "debug" ]; then
        build_debug
else
        build_release
fi



echo "Adding back wkwebview and removing certificate fork..."
cordova plugin remove cordova-plugin-certificates-pp-fork > /dev/null 2>&1
cordova plugin add  https://github.com/pliablepixels/cordova-plugin-ionic-webview.git > /dev/null 2>&1