Install Gradle and Android SDK to build app from Ubuntu cmdline.

Install Gradle

URL: https://docs.gradle.org/current/userguide/installation.html

1
2
3
wget https://services.gradle.org/distributions/gradle-5.4.1-all.zip
unzip gradle-5.4.1-all.zip
mv gradle-5.4.1/ ~/.gradle

Include offline components in your Gradle project

URL: https://developer.android.com/studio/intro/studio-config#offline

 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
cat > ~/.gradle/init.d/offline.gradle <<- EOF
    def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
    def repos = new ArrayList()
    reposDir.eachDir {repos.add(it) }
    repos.sort()

    allprojects {
      buildscript {
        repositories {
          for (repo in repos) {
            maven {
              name = "injected_offline_${repo.name}"
              url = repo.toURI().toURL()
            }
          }
        }
      }
      repositories {
        for (repo in repos) {
          maven {
            name = "injected_offline_${repo.name}"
            url = repo.toURI().toURL()
          }
        }
      }
    }
    EOF

Install SDK tools package

URL: https://developer.android.com/studio#offline

1
2
3
4
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

mkdir -p ~/.android/manual-offline-m2/
cd ~/.android/manual-offline-m2/ && unzip sdk-tools-linux-4333796.zip

Install Android SDK

URL: https://developer.android.com/studio/command-line/sdkmanager

1
2
cd ~/.android/manual-offline-m2/ && \
    ./tools/bin/sdkmanager "platform-tools" "platforms;android-28"

Build BLE_HID_EXAMPLE

1
2
git clone https://github.com/Aleksander-Drewnicki/BLE_HID_EXAMPLE
cd BLE_HID_EXAMPLE && ./gradlew build

Gradle proxy configuration

URL: https://stackoverflow.com/questions/5991194/gradle-proxy-configuration

1
2
3
4
./gradlew \
    -Dhttp.proxyHost=192.168.1.39 -Dhttp.proxyPort=1080 \
    -Dhttps.proxyHost=192.168.1.39 -Dhttps.proxyPort=1080 \
    build

Fix “running out of JVM memory”

URL: https://stackoverflow.com/questions/59624003/daemon-is-stopping-immediately-jvm-garbage-collector-thrashing-and-after-running

1
echo "org.gradle.jvmargs=-Xmx4096M" >> gradle.properties

Build go-tun2socks-mobile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
git clone https://github.com/eycorsican/go-tun2socks-mobile
cd go-tun2socks-mobile/ && {
   go get -d .
   go get golang.org/x/mobile/cmd/gomobile
   export PATH=~/go/bin:$PATH
   gomobile init

   export ANDROID_HOME=~/.android/manual-offline-m2
   export ANDROID_NDK_HOME=~/.android/ndk/android-ndk-r21d
   make android
}