android app for otb-cloud uploading
https://otb-cloud.outsidethebox.top/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.5 KiB
121 lines
4.5 KiB
cd /home/def/outsidethebox/otb-cloud-android || exit 1 |
|
set -e |
|
|
|
BACKUPDIR="/home/def/backuphere/otb-cloud-android" |
|
mkdir -p "$BACKUPDIR" |
|
mkdir -p /home/def/outsidethebox/apk-drop |
|
|
|
echo "===== BACKUP =====" |
|
cp /home/def/outsidethebox/otb-cloud-android/app/build.gradle \ |
|
"$BACKUPDIR/app.build.gradle.$(date +%Y%m%d-%H%M%S).bak" |
|
cp /home/def/outsidethebox/otb-cloud-android/app/src/main/AndroidManifest.xml \ |
|
"$BACKUPDIR/AndroidManifest.xml.$(date +%Y%m%d-%H%M%S).bak" |
|
cp /home/def/outsidethebox/otb-cloud-android/app/src/main/java/top/outsidethebox/otbcloud/MainActivity.kt \ |
|
"$BACKUPDIR/MainActivity.kt.$(date +%Y%m%d-%H%M%S).bak" |
|
cp /home/def/outsidethebox/otb-cloud-android/app/src/main/res/layout/activity_main.xml \ |
|
"$BACKUPDIR/activity_main.xml.$(date +%Y%m%d-%H%M%S).bak" |
|
|
|
echo "===== PATCH /home/def/outsidethebox/otb-cloud-android/app/src/main/java/top/outsidethebox/otbcloud/MainActivity.kt =====" |
|
python3 - << 'PY' |
|
from pathlib import Path |
|
|
|
p = Path("/home/def/outsidethebox/otb-cloud-android/app/src/main/java/top/outsidethebox/otbcloud/MainActivity.kt") |
|
text = p.read_text() |
|
|
|
text = text.replace('private const val VIDEO_BATCH_SIZE = 5', 'private const val VIDEO_BATCH_SIZE = 2') |
|
text = text.replace('private const val IMAGE_BATCH_SIZE = 50', 'private const val IMAGE_BATCH_SIZE = 25') |
|
text = text.replace('private const val PAUSE_BETWEEN_BATCHES_MS = 800L', 'private const val PAUSE_BETWEEN_BATCHES_MS = 1500L') |
|
|
|
old = ''' |
|
val ok = uploadSingleFile(deviceUuid, item) |
|
if (ok) { |
|
uploaded += 1 |
|
} else { |
|
failed += 1 |
|
} |
|
''' |
|
|
|
new = ''' |
|
val ok = uploadSingleFile(deviceUuid, item) |
|
if (ok) { |
|
uploaded += 1 |
|
} else { |
|
failed += 1 |
|
} |
|
|
|
try { |
|
Thread.sleep(300L) |
|
} catch (_: Exception) { |
|
} |
|
|
|
System.gc() |
|
''' |
|
|
|
if old not in text: |
|
raise SystemExit("FAILED: upload loop block not found in MainActivity.kt") |
|
|
|
text = text.replace(old, new, 1) |
|
p.write_text(text) |
|
print("MainActivity.kt patched") |
|
PY |
|
|
|
echo "===== PATCH /home/def/outsidethebox/otb-cloud-android/app/build.gradle =====" |
|
python3 - << 'PY' |
|
from pathlib import Path |
|
import re |
|
|
|
p = Path("/home/def/outsidethebox/otb-cloud-android/app/build.gradle") |
|
text = p.read_text() |
|
text = re.sub(r'versionCode\s+\d+', 'versionCode 22', text) |
|
text = re.sub(r'versionName\s+"[^"]+"', 'versionName "0.2.2"', text) |
|
p.write_text(text) |
|
print("build.gradle updated") |
|
PY |
|
|
|
echo "===== PATCH /home/def/outsidethebox/otb-cloud-android/app/src/main/AndroidManifest.xml =====" |
|
python3 - << 'PY' |
|
from pathlib import Path |
|
|
|
p = Path("/home/def/outsidethebox/otb-cloud-android/app/src/main/AndroidManifest.xml") |
|
text = p.read_text() |
|
for old in ['OTB Cloud v0.2.1', 'OTB Cloud v0.2.0', 'OTB Cloud v0.1.9', 'OTB Cloud v0.1.8']: |
|
text = text.replace(f'android:label="{old}"', 'android:label="OTB Cloud v0.2.2"') |
|
p.write_text(text) |
|
print("AndroidManifest.xml updated") |
|
PY |
|
|
|
echo "===== PATCH /home/def/outsidethebox/otb-cloud-android/app/src/main/res/layout/activity_main.xml =====" |
|
python3 - << 'PY' |
|
from pathlib import Path |
|
|
|
p = Path("/home/def/outsidethebox/otb-cloud-android/app/src/main/res/layout/activity_main.xml") |
|
text = p.read_text() |
|
|
|
for old in ['OTB Cloud v0.2.1', 'OTB Cloud v0.2.0', 'OTB Cloud v0.1.9', 'OTB Cloud v0.1.8']: |
|
text = text.replace(old, 'OTB Cloud v0.2.2') |
|
|
|
for old in ['Android Backup Client v0.2.1', 'Android Backup Client v0.2.0', 'Android Backup Client v0.1.9', 'Android Backup Client v0.1.8']: |
|
text = text.replace(old, 'Android Backup Client v0.2.2') |
|
|
|
p.write_text(text) |
|
print("activity_main.xml updated") |
|
PY |
|
|
|
echo "===== VERIFY SOURCE =====" |
|
grep -Rn --exclude-dir=.gradle --exclude-dir=build --exclude="*.bak*" '0.2.2\|0.2.1\|0.2.0\|0.1.9\|0.1.8' \ |
|
/home/def/outsidethebox/otb-cloud-android/app \ |
|
/home/def/outsidethebox/otb-cloud-android/app/build.gradle || true |
|
|
|
echo "===== BUILD =====" |
|
cd /home/def/outsidethebox/otb-cloud-android || exit 1 |
|
./gradlew clean assembleDebug --no-daemon |
|
|
|
echo "===== COPY APK =====" |
|
cp /home/def/outsidethebox/otb-cloud-android/app/build/outputs/apk/debug/app-debug.apk \ |
|
/home/def/outsidethebox/apk-drop/otb-cloud-v0.2.2.apk |
|
|
|
echo "===== VERIFY APK VERSION =====" |
|
aapt dump badging /home/def/outsidethebox/otb-cloud-android/app/build/outputs/apk/debug/app-debug.apk 2>/dev/null | grep version || true |
|
|
|
echo "===== FINAL APK =====" |
|
ls -lh /home/def/outsidethebox/apk-drop/otb-cloud-v0.2.2.apk
|
|
|