安卓低版本兼容
This commit is contained in:
@@ -34,8 +34,18 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build Android TV APK
|
name: Build Android TV APK (${{ matrix.variant }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- variant: standard
|
||||||
|
min_sdk: '23'
|
||||||
|
label: android6plus
|
||||||
|
- variant: compat
|
||||||
|
min_sdk: '21'
|
||||||
|
label: android5plus
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source code
|
- name: Checkout source code
|
||||||
@@ -80,6 +90,7 @@ jobs:
|
|||||||
APP_NAME: ${{ inputs.app_name }}
|
APP_NAME: ${{ inputs.app_name }}
|
||||||
VERSION_NAME: ${{ inputs.version_name }}
|
VERSION_NAME: ${{ inputs.version_name }}
|
||||||
VERSION_CODE: ${{ inputs.version_code }}
|
VERSION_CODE: ${{ inputs.version_code }}
|
||||||
|
MIN_SDK: ${{ matrix.min_sdk }}
|
||||||
ANDROID_KEYSTORE_PATH: /tmp/android-tv-release.keystore
|
ANDROID_KEYSTORE_PATH: /tmp/android-tv-release.keystore
|
||||||
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||||
@@ -89,24 +100,25 @@ jobs:
|
|||||||
-PBASE_URL="$BASE_URL" \
|
-PBASE_URL="$BASE_URL" \
|
||||||
-PAPP_NAME="$APP_NAME" \
|
-PAPP_NAME="$APP_NAME" \
|
||||||
-PVERSION_NAME="$VERSION_NAME" \
|
-PVERSION_NAME="$VERSION_NAME" \
|
||||||
-PVERSION_CODE="$VERSION_CODE"
|
-PVERSION_CODE="$VERSION_CODE" \
|
||||||
|
-PMIN_SDK="$MIN_SDK"
|
||||||
|
|
||||||
- name: Collect APK artifacts
|
- name: Collect APK artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir -p /tmp/android-tv-apks
|
mkdir -p /tmp/android-tv-apks
|
||||||
cp apps/android-tv/app/build/outputs/apk/debug/app-debug.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-debug.apk"
|
cp apps/android-tv/app/build/outputs/apk/debug/app-debug.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-${{ matrix.label }}-debug.apk"
|
||||||
if [ -f apps/android-tv/app/build/outputs/apk/release/app-release.apk ]; then
|
if [ -f apps/android-tv/app/build/outputs/apk/release/app-release.apk ]; then
|
||||||
cp apps/android-tv/app/build/outputs/apk/release/app-release.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-release-signed.apk"
|
cp apps/android-tv/app/build/outputs/apk/release/app-release.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-${{ matrix.label }}-release-signed.apk"
|
||||||
fi
|
fi
|
||||||
if [ -f apps/android-tv/app/build/outputs/apk/release/app-release-unsigned.apk ]; then
|
if [ -f apps/android-tv/app/build/outputs/apk/release/app-release-unsigned.apk ]; then
|
||||||
cp apps/android-tv/app/build/outputs/apk/release/app-release-unsigned.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-release-unsigned.apk"
|
cp apps/android-tv/app/build/outputs/apk/release/app-release-unsigned.apk "/tmp/android-tv-apks/moontvplus-tv-${{ inputs.version_name }}-${{ matrix.label }}-release-unsigned.apk"
|
||||||
fi
|
fi
|
||||||
ls -lh /tmp/android-tv-apks
|
ls -lh /tmp/android-tv-apks
|
||||||
|
|
||||||
- name: Upload APK artifacts
|
- name: Upload APK artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: moontvplus-android-tv-${{ inputs.version_name }}
|
name: moontvplus-android-tv-${{ inputs.version_name }}-${{ matrix.label }}
|
||||||
path: /tmp/android-tv-apks/*.apk
|
path: /tmp/android-tv-apks/*.apk
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
- `APP_NAME`: Android TV 桌面显示名称
|
- `APP_NAME`: Android TV 桌面显示名称
|
||||||
- `VERSION_NAME`: APK 版本名
|
- `VERSION_NAME`: APK 版本名
|
||||||
- `VERSION_CODE`: APK 版本号,整数
|
- `VERSION_CODE`: APK 版本号,整数
|
||||||
|
- `MIN_SDK`: 最低 Android API,标准版为 `23`(Android 6+),兼容版为 `21`(Android 5+)
|
||||||
|
|
||||||
App 启动时会自动打开:
|
App 启动时会自动打开:
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ BASE_URL 去掉末尾 / 后 + /tv
|
|||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
|
|
||||||
|
- GitHub Actions 默认构建两个版本:`android6plus` 标准版和 `android5plus` 兼容版
|
||||||
- 锁定横屏
|
- 锁定横屏
|
||||||
- 支持 Android TV Launcher
|
- 支持 Android TV Launcher
|
||||||
- 允许 HTTP 明文访问
|
- 允许 HTTP 明文访问
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ val rawBaseUrl = propOrEnv("BASE_URL", "BASE_URL", "http://192.168.1.10:3000")
|
|||||||
val appDisplayName = propOrEnv("APP_NAME", "APP_NAME", "MoonTVPlus TV")
|
val appDisplayName = propOrEnv("APP_NAME", "APP_NAME", "MoonTVPlus TV")
|
||||||
val versionNameValue = propOrEnv("VERSION_NAME", "VERSION_NAME", "1.0.0")
|
val versionNameValue = propOrEnv("VERSION_NAME", "VERSION_NAME", "1.0.0")
|
||||||
val versionCodeValue = propOrEnv("VERSION_CODE", "VERSION_CODE", "1").toIntOrNull() ?: 1
|
val versionCodeValue = propOrEnv("VERSION_CODE", "VERSION_CODE", "1").toIntOrNull() ?: 1
|
||||||
|
val minSdkValue = propOrEnv("MIN_SDK", "MIN_SDK", "23").toIntOrNull() ?: 23
|
||||||
|
|
||||||
fun escapeJavaString(value: String): String = value
|
fun escapeJavaString(value: String): String = value
|
||||||
.replace("\\", "\\\\")
|
.replace("\\", "\\\\")
|
||||||
@@ -30,7 +31,7 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.moontvplus.tv"
|
applicationId = "com.moontvplus.tv"
|
||||||
minSdk = 23
|
minSdk = minSdkValue
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = versionCodeValue
|
versionCode = versionCodeValue
|
||||||
versionName = versionNameValue
|
versionName = versionNameValue
|
||||||
|
|||||||
Reference in New Issue
Block a user