Release 2.3.0: Android APK with subscription, ping and Xray/Hy2 VPN.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
$ErrorActionPreference = "Stop"
|
||||
$android = Join-Path (Split-Path -Parent $PSScriptRoot) "android"
|
||||
Set-Location $android
|
||||
$ver = "8.9"
|
||||
$zip = Join-Path $env:TEMP "gradle-$ver-bin.zip"
|
||||
$dest = Join-Path $env:TEMP "gradle-$ver"
|
||||
if (-not (Test-Path "$dest\bin\gradle.bat")) {
|
||||
Invoke-WebRequest "https://services.gradle.org/distributions/gradle-$ver-bin.zip" -OutFile $zip
|
||||
Expand-Archive -Force $zip $env:TEMP
|
||||
}
|
||||
& "$dest\bin\gradle.bat" wrapper --gradle-version $ver
|
||||
@@ -0,0 +1,69 @@
|
||||
# Download Xray + Hysteria Android binaries into app assets (required for VPN cores).
|
||||
$ErrorActionPreference = "Stop"
|
||||
$Root = Split-Path -Parent $PSScriptRoot
|
||||
$Assets = Join-Path $Root "android\app\src\main\assets\cores"
|
||||
$Tmp = Join-Path $env:TEMP "navis-android-cores"
|
||||
New-Item -ItemType Directory -Force -Path $Tmp, $Assets | Out-Null
|
||||
|
||||
function Get-AbiDir([string]$abi) {
|
||||
$d = Join-Path $Assets $abi
|
||||
New-Item -ItemType Directory -Force -Path $d | Out-Null
|
||||
return $d
|
||||
}
|
||||
|
||||
$xrayVer = "25.3.6"
|
||||
$xrayAssets = @(
|
||||
@{ abi = "arm64-v8a"; file = "Xray-android-arm64-v8a.zip" },
|
||||
@{ abi = "armeabi-v7a"; file = "Xray-android-arm32-v7a.zip" },
|
||||
@{ abi = "x86_64"; file = "Xray-android-x86_64.zip?"; }
|
||||
)
|
||||
# Correct zip names from XTLS releases (may vary — try common ones)
|
||||
$xrayAssets = @(
|
||||
@{ abi = "arm64-v8a"; file = "Xray-android-arm64-v8a.zip" },
|
||||
@{ abi = "armeabi-v7a"; file = "Xray-android-arm32-v7a.zip" },
|
||||
@{ abi = "x86_64"; file = "Xray-android-amd64.zip" }
|
||||
)
|
||||
|
||||
foreach ($e in $xrayAssets) {
|
||||
try {
|
||||
$u = "https://github.com/XTLS/Xray-core/releases/download/v$xrayVer/$($e.file)"
|
||||
$z = Join-Path $Tmp $e.file
|
||||
Write-Host "Downloading Xray $($e.abi) from $u ..."
|
||||
Invoke-WebRequest -Uri $u -OutFile $z
|
||||
$out = Join-Path $Tmp ("xray-" + $e.abi)
|
||||
if (Test-Path $out) { Remove-Item -Recurse -Force $out }
|
||||
Expand-Archive -Force $z $out
|
||||
$bin = Get-ChildItem $out -Recurse | Where-Object { $_.Name -eq "xray" } | Select-Object -First 1
|
||||
if (-not $bin) { throw "xray binary not found in zip" }
|
||||
Copy-Item -Force $bin.FullName (Join-Path (Get-AbiDir $e.abi) "xray")
|
||||
} catch {
|
||||
Write-Warning "Skip Xray $($e.abi): $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
$hyVer = "app/v2.6.1"
|
||||
$hyMap = @(
|
||||
@{ abi = "arm64-v8a"; file = "hysteria-android-arm64" },
|
||||
@{ abi = "armeabi-v7a"; file = "hysteria-android-armv7" },
|
||||
@{ abi = "x86_64"; file = "hysteria-android-amd64" }
|
||||
)
|
||||
foreach ($h in $hyMap) {
|
||||
try {
|
||||
$u = "https://github.com/apernet/hysteria/releases/download/$hyVer/$($h.file)"
|
||||
$dest = Join-Path (Get-AbiDir $h.abi) "hysteria"
|
||||
Write-Host "Downloading Hysteria $($h.abi)..."
|
||||
Invoke-WebRequest -Uri $u -OutFile $dest
|
||||
} catch {
|
||||
Write-Warning "Skip Hy2 $($h.abi): $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
@"
|
||||
Navis Android cores
|
||||
- xray: VLESS / VMess / Trojan
|
||||
- hysteria: Hysteria 2
|
||||
NaiveProxy / full AmneziaWG tunnel: WIP (import UI already accepts links)
|
||||
"@ | Set-Content -Encoding UTF8 (Join-Path $Assets "README.txt")
|
||||
|
||||
Write-Host "Cores ready under $Assets"
|
||||
Get-ChildItem $Assets -Recurse | Select-Object FullName, Length
|
||||
Reference in New Issue
Block a user