52 Commits

Author SHA1 Message Date
d2ab1f83d7 Update README.md 2025-01-01 18:10:04 +07:00
689cf90f6a Update Build.yml 2025-01-01 16:38:54 +07:00
9c38444051 Update YouTube.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-12-01 18:29:38 +07:00
65dc96ac52 Update files
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-12-01 18:23:09 +07:00
4905811659 Update README.md
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-08-26 14:15:38 +07:00
4758eb22cf Replace '.' with '-' in youtube link
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-08-26 14:14:56 +07:00
c3c0a74bfe Move YouTube downloading to APKMirror
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-08-01 14:48:46 +07:00
2aa6170830 Update: microg downloading; workflow; readme.md
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-05-01 12:23:22 +07:00
db4d8ea6a3 Update README.md, ReleaseNotesTemplate.md
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-31 12:43:25 +07:00
c51bb19b8d Update workflow
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-31 12:42:55 +07:00
096c05b8cf Update workflow scripts
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-31 12:42:43 +07:00
82cfc6d1f6 Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-31 12:42:25 +07:00
c4e701fc83 Update workflow
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-10 21:22:11 +07:00
5c614ab6cd Fix indents
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-10 21:20:13 +07:00
83310266b7 Update Actions Scripts
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-10 21:13:28 +07:00
3381005bb2 Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-10 21:07:28 +07:00
f26e8938d4 Revert "Update Build.yml"
This reverts commit 119c8b0e2a.
2024-03-03 19:43:50 +07:00
a9787a19a4 Revert "Update Build.ps1"
This reverts commit 75f3ea82c6.
2024-03-03 19:43:32 +07:00
119c8b0e2a Update Build.yml
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-01 08:39:58 +07:00
75f3ea82c6 Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2024-03-01 08:39:44 +07:00
63e95a3a63 Update Build.yml 2024-02-02 19:28:33 +07:00
a61a5fbb8a Update MicroG.ps1 2024-02-02 19:28:12 +07:00
f10c8abf4e Update Build.ps1 2024-02-02 19:27:48 +07:00
8242b06085 Revert "Update YouTube.ps1"
This reverts commit bdca80cf21.
2024-01-02 14:17:04 +07:00
bdca80cf21 Update YouTube.ps1 2024-01-02 01:16:22 +07:00
271a6e13c6 Update YouTube.ps1 2024-01-02 01:11:11 +07:00
7f15206c6d Fix indents
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-12-01 21:08:39 +07:00
dab245fc0d Update Build.yml
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-12-01 13:03:21 +07:00
aec3595c1f Update YouTube.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-12-01 12:58:17 +07:00
6d79dcd962 Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-12-01 12:57:50 +07:00
c6fe465f1e Update README.md
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-08-28 13:21:14 +07:00
7c399049ae Change step names in CI
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-08-28 13:21:00 +07:00
cfce0e86f7 Fix interacting with latest revanced-cli
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-08-28 13:06:13 +07:00
faf94e4e29 Update ReVanced_Patches.ps1 2023-07-17 04:20:38 +07:00
ad506f52ce Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-14 14:07:15 +07:00
a110a4b243 Update Scripts/YouTube.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-11 22:19:36 +07:00
71d741090a Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-11 22:19:31 +07:00
5acbf45673 Update Scripts/YouTube.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-11 22:11:05 +07:00
0429d83c29 Update Build.ps1
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-11 22:10:05 +07:00
52588a3dd5 Restore file from previous commits and fix link
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-09 22:45:32 +07:00
c60238c508 fix youtube downloading from actions 2
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-09 22:41:45 +07:00
02582d4598 fix youtube downloading from actions
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-09 22:39:05 +07:00
6898697b69 implemented finding actual APK link (not BUNDLE)
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-07-09 22:29:17 +07:00
79ceecf058 Fix YouTube download link
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-06-11 21:00:06 +07:00
ab77af47b0 Update Build.yml 2023-03-28 15:33:24 +07:00
db5e3f387f Update README.md 2023-02-17 23:07:45 +07:00
5b0be70e7a Update
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-02-09 23:24:10 +07:00
0106b5861b Update files
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2023-02-07 15:42:14 +07:00
90b7a1d005 Update Zulu_JDK.ps1 2023-02-07 15:13:47 +07:00
7fb3b3f2b5 Update Zulu_JDK.ps1 2023-02-06 01:06:27 +07:00
21a6d13633 Update README.md 2023-01-15 20:08:04 +07:00
eef3668688 Update README.md 2023-01-07 15:56:53 +07:00
10 changed files with 239 additions and 166 deletions

View File

@@ -1,9 +1,6 @@
name: Build
on:
push:
tags:
- "*"
workflow_dispatch:
jobs:
@@ -13,79 +10,72 @@ jobs:
steps:
- uses: actions/checkout@main
- name: Installing AngleSharp
- name: Install AngleSharp
run: |
Install-Package AngleSharp -Source https://www.nuget.org/api/v2 -SkipDependencies -Force
- name: Downloading YouTube
- name: Download YouTube
run: |
New-Item -Path Temp -ItemType Directory -Force
. Scripts\YouTube.ps1
- name: Downloading ReVanced CLI
- name: Download ReVanced CLI
run: |
. Scripts\ReVanced_CLI.ps1
- name: Downloading ReVanced Patches
- name: Download ReVanced Patches
run: |
. Scripts\ReVanced_Patches.ps1
- name: Downloading ReVanced Integrations
run: |
. Scripts\ReVanced_Intergrations.ps1
- name: Downloading Vanced MicroG
- name: Download Vanced MicroG
run: |
. Scripts\MicroG.ps1
- name: Downloading and expanding Zulu JDK
- name: Download and expanding Zulu JDK
run: |
. Scripts\Zulu_JDK.ps1
- name: Building
- name: Build
run: |
$JavaPath = (Resolve-Path -Path "Temp\jdk_windows-x64_bin\zulu*win_x64\bin\java.exe").Path
& $JavaPath `
-jar "Temp\revanced-cli.jar" `
--apk "Temp\youtube.apk" `
--bundle "Temp\revanced-patches.jar" `
--merge "Temp\revanced-integrations.apk" `
--exclude hide-time-and-seekbar --exclude always-autorepeat --exclude hide-captions-button --exclude disable-fullscreen-panels --exclude old-quality-layout `
--clean `
--temp-dir "Temp\Temp" `
--out "Temp\revanced.apk"
-jar "Temp\revanced-cli.jar" patch `
--patches "Temp\revanced-patches.rvp" `
--disable "Always repeat" `
--disable "Disable auto captions" `
--disable "Hide timestamp" `
--disable "Hide seekbar" `
--purge `
--out "Temp\revanced.apk" `
"Temp\youtube.apk"
- name: Creating archive
- name: Create archive
run: |
Get-ChildItem Temp\Temp -Recurse -Force
$Parameters = @{
Path = "Temp\revanced.apk", "Temp\microg.apk"
Path = "Temp\revanced.apk", "Temp\microg.apk", "Temp\microg-hw.apk"
DestinationPath = "ReVanced.zip"
CompressionLevel = "Fastest"
Force = $true
}
Compress-Archive @Parameters
- name: Creating Release Notes
- name: Create Release Notes
id: read_release
run: |
# https://en.wikipedia.org/wiki/Percent-encoding
$Release = (Get-Content -Path ReleaseNotesTemplate.md -Encoding utf8 -Raw).replace("`n", "%0A").replace("`r", "%0D").replace("YouTubeTag", "${{ env.LatestSupportedYT }}").replace("CLITag", "${{ env.CLIvtag }}").replace("PatchesTag", "${{ env.Patchesvtag }}").replace("IntegrationsTag", "${{ env.IntegrationsTag }}").replace("MicroGTag", "${{ env.MicroGTag }}").replace("ZuluTag", "${{ env.ZuluTag }}")
(Get-Content -Path ReleaseNotesTemplate.md -Encoding utf8 -Raw).replace("YouTubeTag", "${{ env.LatestSupportedYT }}").replace("CLITag", "${{ env.CLIvtag }}").replace("PatchesTag", "${{ env.Patchesvtag }}").replace("MicroGTag", "${{ env.MicroGTag }}").replace("ZuluTag", "${{ env.ZuluTag }}") | Set-Content -Path ReleaseNotesTemplate.md -Encoding utf8 -Force
# https://trstringer.com/github-actions-multiline-strings/
echo "::set-output name=RELEASE_BODY::$Release"
# echo "RELEASE_BODY=$Release" >> $GITHUB_OUTPUT
# echo "RELEASE_BODY=$Release" >> $env:GITHUB_ENV
Add-Content -Path $env:GITHUB_OUTPUT -Value "ReleaseBody=ReleaseNotesTemplate.md"
$ReleaseName = Get-Date -f "yyyy.MM.dd"
echo "RELEASE_NAME=$ReleaseName" >> $env:GITHUB_ENV
- name: Uploading to Releases
uses: softprops/action-gh-release@master
- name: Upload to Releases
# https://github.com/softprops/action-gh-release/issues/556#issuecomment-2556947371
uses: softprops/action-gh-release@v2.1.0
with:
tag_name: ${{ env.RELEASE_NAME }}
token: ${{ github.token }}
body_path: ${{ steps.read_release.outputs.ReleaseBody }}
files: ReVanced.zip
body: ${{ steps.read_release.outputs.RELEASE_BODY }}
# body: ${{ env.RELEASE_BODY }}

160
Build.ps1
View File

@@ -5,7 +5,7 @@
* ReVanced CLI;
* ReVanced Patches;
* ReVanced Integrations;
* microG GmsCore;
* ReVanced microG GmsCore;
* Azul Zulu.
.NOTES
@@ -18,6 +18,15 @@
# Requires -Version 5.1
# Doesn't work on PowerShell 7.2 due it doesn't contains IE parser engine. You have to use a 3rd party module to make it work like it's presented in CI/CD config: AngleSharp
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if ($Host.Version.Major -eq 5)
{
# Progress bar can significantly impact cmdlet performance
# https://github.com/PowerShell/PowerShell/issues/2138
$Script:ProgressPreference = "SilentlyContinue"
}
# Download all files to "Script location folder\ReVanced"
$WorkingFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
if (-not (Test-Path -Path "$WorkingFolder\ReVanced"))
@@ -25,22 +34,60 @@ if (-not (Test-Path -Path "$WorkingFolder\ReVanced"))
New-Item -Path "$WorkingFolder\ReVanced" -ItemType Directory -Force
}
# Get latest supported YouTube client version via ReVanced JSON
# It will let us to download always latest YouTube apk supported by ReVanced team
# https://github.com/revanced/revanced-patches/blob/main/patches.json
# Get the latest supported YouTube version to patch
# https://api.revanced.app
$Parameters = @{
Uri = "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json"
Uri = "https://api.revanced.app/v4/patches/list"
UseBasicParsing = $true
}
$JSON = Invoke-RestMethod @Parameters
$versions = ($JSON | Where-Object -FilterScript {$_.compatiblePackages.name -eq "com.google.android.youtube"}).compatiblePackages.versions
$LatestSupported = $versions | Sort-Object -Descending -Unique | Select-Object -First 1
$LatestSupported = $LatestSupported.replace(".", "-")
$JSON = (Invoke-Webrequest @Parameters).Content | ConvertFrom-Json
$versions = ($JSON | Where-Object -FilterScript {$_.name -eq "Video ads"})
$LatestSupported = $versions.compatiblePackages.'com.google.android.youtube' | Sort-Object -Descending -Unique | Select-Object -First 1
Write-Verbose -Message "Downloading the latest supported YouTube apk" -Verbose
# We need a NON-bundle version
<#
# https://apkpure.net/ru/youtube/com.google.android.youtube/versions
$Parameters = @{
Uri = "https://apkpure.net/youtube/com.google.android.youtube/download/$($LatestSupported)"
UseBasicParsing = $true
Verbose = $true
}
$URL = (Invoke-Webrequest @Parameters).Links.href | Where-Object -FilterScript {$_ -match "APK/com.google.android.youtube"} | Select-Object -Index 1
$Parameters = @{
Uri = $URL
OutFile = "$WorkingFolder\ReVanced\youtube.apk"
UseBasicParsing = $true
Verbose = $true
}
Invoke-Webrequest @Parameters
#>
# https://www.apkmirror.com/apk/google-inc/youtube/
$apkMirrorLink = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported.replace('.', '-'))-release/"
$Parameters = @{
Uri = $apkMirrorLink
UseBasicParsing = $false # Disabled
Verbose = $true
}
$Request = Invoke-Webrequest @Parameters
$Request.ParsedHtml.getElementsByClassName("table-row headerFont") | ForEach-Object -Process {
foreach ($child in $_.children)
{
if ($child.innerText -eq "nodpi")
{
$apkPackageLink = ($_.getElementsByTagName("a") | Select-Object -First 1).nameProp
break
}
}
}
$apkMirrorLink += $apkPackageLink # actual APK link (not BUNDLE)
# Get unique key to generate direct link
# https://www.apkmirror.com/apk/google-inc/youtube/
$Parameters = @{
Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported)-release/youtube-$($LatestSupported)-2-android-apk-download/"
Uri = $apkMirrorLink
UseBasicParsing = $false # Disabled
Verbose = $true
}
@@ -48,7 +95,7 @@ $Request = Invoke-Webrequest @Parameters
$nameProp = $Request.ParsedHtml.getElementsByClassName("accent_bg btn btn-flat downloadButton") | ForEach-Object -Process {$_.nameProp}
$Parameters = @{
Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported)-release/youtube-$($LatestSupported)-2-android-apk-download/download/$($nameProp)"
Uri = $apkMirrorLink + "/download/$($nameProp)"
UseBasicParsing = $false # Disabled
Verbose = $true
}
@@ -65,71 +112,72 @@ $Parameters = @{
}
Invoke-Webrequest @Parameters
Write-Verbose -Message "" -Verbose
Write-Verbose -Message "Downloading ReVanced CLI" -Verbose
# https://github.com/revanced/revanced-cli
$Parameters = @{
Uri = "https://api.github.com/repos/revanced/revanced-cli/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
$Tag = (Invoke-RestMethod @Parameters).tag_name
$Tag2 = $Tag.replace("v", "")
$URL = ((Invoke-RestMethod @Parameters).assets | Where-Object -FilterScript {$_.content_type -eq "application/java-archive"}).browser_download_url
$Parameters = @{
Uri = "https://github.com/revanced/revanced-cli/releases/download/$Tag/revanced-cli-$Tag2-all.jar"
Uri = $URL
Outfile = "$WorkingFolder\ReVanced\revanced-cli.jar"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
Write-Verbose -Message "" -Verbose
Write-Verbose -Message "Downloading ReVanced patches" -Verbose
# https://github.com/revanced/revanced-patches
$Parameters = @{
Uri = "https://api.github.com/repos/revanced/revanced-patches/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
$Tag = (Invoke-RestMethod @Parameters).tag_name
$Tag2 = $Tag.replace("v", "")
$URL = ((Invoke-RestMethod @Parameters).assets | Where-Object -FilterScript {$_.content_type -eq "text/plain"}).browser_download_url
$Parameters = @{
Uri = "https://github.com/revanced/revanced-patches/releases/download/$Tag/revanced-patches-$Tag2.jar"
Outfile = "$WorkingFolder\ReVanced\revanced-patches.jar"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
# https://github.com/revanced/revanced-integrations
$Parameters = @{
Uri = "https://api.github.com/repos/revanced/revanced-integrations/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
# $Tag = (Invoke-RestMethod @Parameters).tag_name
# $Tag2 = $Tag.replace("v", "")
$URL = (Invoke-RestMethod @Parameters).assets.browser_download_url
$Parameters = @{
# Uri = "https://github.com/revanced/revanced-integrations/releases/download/$Tag/revanced-integrations-$Tag2.apk"
Uri = $URL
Outfile = "$WorkingFolder\ReVanced\revanced-integrations.apk"
Outfile = "$WorkingFolder\ReVanced\revanced-patches.rvp"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
# https://github.com/TeamVanced/VancedMicroG
Write-Verbose -Message "" -Verbose
Write-Verbose -Message "Downloading ReVanced GmsCore" -Verbose
# https://github.com/ReVanced/GmsCore
$Parameters = @{
Uri = "https://api.github.com/repos/TeamVanced/VancedMicroG/releases/latest"
Uri = "https://api.github.com/repos/ReVanced/GmsCore/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
$Tag = (Invoke-RestMethod @Parameters).tag_name
$Parameters = @{
Uri = "https://github.com/TeamVanced/VancedMicroG/releases/download/$Tag/microg.apk"
Outfile = "$WorkingFolder\ReVanced\microg.apk"
UseBasicParsing = $true
Verbose = $true
$URL = (Invoke-RestMethod @Parameters).assets
foreach($url in $URL) {
if ($url.name.Contains("-hw-")) {
$url.name = "microg-hw.apk"
} else {
$url.name = "microg.apk"
}
$Parameters = @{
Uri = $url.browser_download_url
Outfile = "$WorkingFolder\ReVanced\$($url.name)"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
}
Invoke-RestMethod @Parameters
# Sometimes older version of zulu-jdk causes conflict, so remove older version before proceeding.
if (Test-Path -Path "$WorkingFolder\ReVanced\jdk")
{
Remove-Item -Path "$WorkingFolder\ReVanced\jdk" -Recurse -Force
}
Write-Verbose -Message "" -Verbose
Write-Verbose -Message "Downloading Azul Zulu" -Verbose
# https://github.com/ScoopInstaller/Java/blob/master/bucket/zulu-jdk.json
$Parameters = @{
Uri = "https://raw.githubusercontent.com/ScoopInstaller/Java/master/bucket/zulu-jdk.json"
@@ -156,21 +204,23 @@ Expand-Archive @Parameters
Remove-Item -Path "$WorkingFolder\ReVanced\jdk_windows-x64_bin.zip" -Force
# https://github.com/revanced/revanced-patches
# Let's create patched APK
& "$WorkingFolder\ReVanced\jdk\zulu*win_x64\bin\java.exe" `
-jar "$WorkingFolder\ReVanced\revanced-cli.jar" `
--apk "$WorkingFolder\ReVanced\youtube.apk" `
--bundle "$WorkingFolder\ReVanced\revanced-patches.jar" `
--merge "$WorkingFolder\ReVanced\revanced-integrations.apk" `
--exclude hide-time-and-seekbar --exclude always-autorepeat --exclude hide-captions-button --exclude disable-fullscreen-panels --exclude old-quality-layout `
--clean `
--temp-dir "$WorkingFolder\ReVanced\Temp" `
--out "$WorkingFolder\ReVanced\revanced.apk"
-jar "$WorkingFolder\ReVanced\revanced-cli.jar" patch `
--patches "$WorkingFolder\ReVanced\revanced-patches.rvp" `
--disable "Always repeat" `
--disable "Disable auto captions" `
--disable "Hide timestamp" `
--disable "Hide seekbar" `
--purge `
--temporary-files-path "$WorkingFolder\ReVanced\Temp" `
--out "$WorkingFolder\ReVanced\revanced.apk" `
"$WorkingFolder\ReVanced\youtube.apk"
# Open working directory with builded files
# Invoke-Item -Path "$WorkingFolder\ReVanced"
# Remove temp directory, because cli failed to clean up directory
Remove-Item -Path "$WorkingFolder\ReVanced\Temp" -Recurse -Force -Confirm:$false
# Remove-Item -Path "$WorkingFolder\ReVanced\Temp" -Recurse -Force -Confirm:$false
Write-Warning -Message "Latest available revanced.apk & microg.apk are ready in `"$WorkingFolder\ReVanced`""

View File

@@ -1,30 +1,27 @@
<a href="https://github.com/JDM170/ReVanced_Builder/actions"><img src="https://img.shields.io/github/workflow/status/farag2/ReVanced_Builder/Build?label=GitHub%20Actions&logo=GitHub"></a>
<a href="https://github.com/JDM170/ReVanced_Builder/actions"><img src="https://img.shields.io/github/actions/workflow/status/JDM170/ReVanced_Builder/Build.yml?label=GitHub%20Actions&logo=GitHub"></a>
# ReVanced builder
Build ReVanced package (.apk) easily than ever using latest ReVanced patches and dependencies
Build ReVanced package (.apk) easily than ever using latest ReVanced patches and dependencies locally or via cloud
## Usage
### Locally
* To build `revanced.apk` locally you need just to run [`Build.ps1`](https://github.com/JDM170/ReVanced_Builder/blob/main/Build.ps1) via PowerShell;
* All [patches](https://github.com/revanced/revanced-patches) except the followings applied to `revanced.apk`:
* All [patches](https://revanced.app/patches?pkg=com.google.android.youtube) except the followings applied to `revanced.apk`:
* always-autorepeat
* enable-wide-searchbar
* disable-fullscreen-panels
* premium-heading
* tablet-mini-player
* The script downloads latest available YouTube package (having parsed [JSON](https://github.com/revanced/revanced-patches/blob/main/patches.json)) supported by ReVanced Team from <https://apkmirror.com> and all dependencies and build package using [Zulu JDK](https://www.azul.com/downloads/?package=jdk);
* hide-captions-button
* hide-timestamp
* hide-seekbar
* The script downloads latest available YouTube package (having parsed [ReVanced API](https://api.revanced.app/v4/patches/list)) supported by ReVanced Team from [APKMirror](https://apkmirror.com) and all dependencies and build package using [Zulu JDK](https://www.azul.com/downloads/?package=jdk);
* Script installs no apps — everything will be held in your `Script location folder\ReVanced`;
* After compiling you get `revanced.apk` & `microg.apk` ready to be installed;
* Release notes are generated dynamically using the [ReleaseNotesTemplate.md](https://github.com/JDM170/ReVanced_Builder/blob/main/ReleaseNotesTemplate.md) template.
## By using CI/CD
### By using CI/CD
```powershell
git clone https://github.com/JDM170/ReVanced_Builder
```
Trigger the [`Build`](https://github.com/JDM170/ReVanced_Builder/actions/workflows/Build.yml) Action manually to create [release page](https://github.com/JDM170/ReVanced_Builder/releases/latest) with configured release notes showing dependencies used for building.
Trigger the [`Build`](https://github.com/JDM170/ReVanced_Builder/actions/workflows/Build.yml) action manually to create [release page](https://github.com/JDM170/ReVanced_Builder/releases/latest) with configured release notes showing dependencies used for building.
![image](https://user-images.githubusercontent.com/10544660/187949763-82fd7a07-8e4e-4527-b631-11920077141f.png)
@@ -34,12 +31,15 @@ Trigger the [`Build`](https://github.com/JDM170/ReVanced_Builder/actions/workflo
* Windows 10 x64 or Windows 11
* Windows PowerShell 5.1
* PowerShell 7 won't work due to it doesn't contain Trident HTML parser, so I have to use a 3rd party parser [AngleSharp](https://github.com/AngleSharp/AngleSharp);
* If you still want it, [get](https://github.com/JDM170/ReVanced_Builder/blob/main/.github/workflows/Build.yml) code from Actions (it's run in PowerShell 7).
* if you want to use PowerShell 7, you will have to install a 3rd party HTML parser ([AngleSharp](https://github.com/AngleSharp/AngleSharp))
## Links
* [APKPure](https://apkpure.net)
* [APKMirror](https://apkmirror.com)
* [ReVanced CLI](https://github.com/revanced/revanced-cli)
* [ReVanced Patches](https://github.com/revanced/revanced-patches)
* [ReVanced Manager](https://github.com/revanced/revanced-manager)
* [Telegram](https://t.me/sophia_chat)
* [ReVanced MicroG](https://github.com/ReVanced/GmsCore)
* [AngleSharp](https://github.com/AngleSharp/AngleSharp)
* [Zulu JDK](https://github.com/ScoopInstaller/Java)
* [Sophia Telegram chat](https://t.me/sophia_chat)

View File

@@ -3,6 +3,5 @@
* YouTube YouTubeTag;
* ReVanced CLI CLITag;
* ReVanced Patches PatchesTag;
* ReVanced Integrations IntegrationsTag;
* Vanced MicroG MicroGTag;
* ReVanced MicroG MicroGTag;
* Azul Zulu ZuluTag.

View File

@@ -1,16 +1,24 @@
# https://github.com/TeamVanced/VancedMicroG
# https://github.com/ReVanced/GmsCore
$Parameters = @{
Uri = "https://api.github.com/repos/TeamVanced/VancedMicroG/releases/latest"
Uri = "https://api.github.com/repos/ReVanced/GmsCore/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
$MicroGTag = (Invoke-RestMethod @Parameters).tag_name
$Parameters = @{
Uri = "https://github.com/TeamVanced/VancedMicroG/releases/download/$MicroGTag/microg.apk"
Outfile = "Temp\microg.apk"
UseBasicParsing = $true
Verbose = $true
$apiResult = Invoke-RestMethod @Parameters
$TAG = $apiResult.tag_name
foreach($url in $apiResult.assets) {
if ($url.name.Contains("-hw-")) {
$url.name = "microg-hw.apk"
} else {
$url.name = "microg.apk"
}
$Parameters = @{
Uri = $url.browser_download_url
Outfile = "Temp\$($url.name)"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
}
Invoke-RestMethod @Parameters
echo "MicroGTag=$MicroGTag" >> $env:GITHUB_ENV
echo "MicroGTag=$TAG" >> $env:GITHUB_ENV

View File

@@ -4,14 +4,15 @@ $Parameters = @{
UseBasicParsing = $true
Verbose = $true
}
$CLIvtag = (Invoke-RestMethod @Parameters).tag_name
$CLItag = $CLIvtag.replace("v", "")
$apiResult = Invoke-RestMethod @Parameters
$URL = ($apiResult.assets | Where-Object -FilterScript {$_.content_type -eq "application/java-archive"}).browser_download_url
$TAG = $apiResult.tag_name
$Parameters = @{
Uri = "https://github.com/revanced/revanced-cli/releases/download/$CLIvtag/revanced-cli-$CLItag-all.jar"
Uri = $URL
Outfile = "Temp\revanced-cli.jar"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
echo "CLIvtag=$CLIvtag" >> $env:GITHUB_ENV
echo "CLIvtag=$TAG" >> $env:GITHUB_ENV

View File

@@ -1,18 +0,0 @@
# https://github.com/revanced/revanced-integrations
$Parameters = @{
Uri = "https://api.github.com/repos/revanced/revanced-integrations/releases/latest"
UseBasicParsing = $true
Verbose = $true
}
$apiResult = Invoke-RestMethod @Parameters
$IntegrationsTag = $apiResult.tag_name
$Parameters = @{
# Uri = "https://github.com/revanced/revanced-integrations/releases/download/$Tag/revanced-integrations-$Tag2.apk"
Uri = $apiResult.assets.browser_download_url
Outfile = "Temp\revanced-integrations.apk"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
echo "IntegrationsTag=$IntegrationsTag" >> $env:GITHUB_ENV

View File

@@ -4,14 +4,15 @@ $Parameters = @{
UseBasicParsing = $true
Verbose = $true
}
$Patchesvtag = (Invoke-RestMethod @Parameters).tag_name
$Patchestag = $Patchesvtag.replace("v", "")
$apiResult = Invoke-RestMethod @Parameters
$URL = ($apiResult.assets | Where-Object -FilterScript {$_.content_type -eq "text/plain"}).browser_download_url
$TAG = $apiResult.tag_name
$Parameters = @{
Uri = "https://github.com/revanced/revanced-patches/releases/download/$Patchesvtag/revanced-patches-$Patchestag.jar"
Outfile = "Temp\revanced-patches.jar"
Uri = $URL
Outfile = "Temp\revanced-patches.rvp"
UseBasicParsing = $true
Verbose = $true
}
Invoke-RestMethod @Parameters
echo "Patchesvtag=$Patchesvtag" >> $env:GITHUB_ENV
echo "Patchesvtag=$TAG" >> $env:GITHUB_ENV

View File

@@ -1,36 +1,77 @@
# Get latest supported YouTube client version via ReVanced JSON
# It will let us to download always latest YouTube apk supported by ReVanced team
# https://github.com/revanced/revanced-patches/blob/main/patches.json
# Get the latest supported YouTube version to patch
# https://api.revanced.app/docs/swagger
$Parameters = @{
Uri = "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json"
Uri = "https://api.revanced.app/v4/patches/list"
UseBasicParsing = $true
}
$JSON = Invoke-RestMethod @Parameters
$versions = ($JSON | Where-Object -FilterScript {$_.compatiblePackages.name -eq "com.google.android.youtube"}).compatiblePackages.versions
$LatestSupported = $versions | Sort-Object -Descending -Unique | Select-Object -First 1
$LatestSupportedYT = $LatestSupported.replace(".", "-")
$JSON = (Invoke-Webrequest @Parameters).Content | ConvertFrom-Json
$versions = ($JSON | Where-Object -FilterScript {$_.name -eq "Video ads"})
$LatestSupported = $versions.compatiblePackages.'com.google.android.youtube' | Sort-Object -Descending -Unique | Select-Object -First 1
# We need a NON-bundle version
# https://apkpure.net/ru/youtube/com.google.android.youtube/versions
<#
$Parameters = @{
Uri = "https://apkpure.net/youtube/com.google.android.youtube/download/$($LatestSupported)"
UseBasicParsing = $true
Verbose = $true
}
$URL = (Invoke-Webrequest @Parameters).Links.href | Where-Object -FilterScript {$_ -match "APK/com.google.android.youtube"} | Select-Object -Index 1
$Parameters = @{
Uri = $URL
OutFile = "Temp\youtube.apk"
UseBasicParsing = $true
Verbose = $true
}
Invoke-Webrequest @Parameters
#>
$AngleSharpAssemblyPath = (Get-ChildItem -Path (Split-Path -Path (Get-Package -Name AngleSharp).Source) -Filter "*.dll" -Recurse | Where-Object -FilterScript {$_ -match "standard"} | Select-Object -Last 1).FullName
Add-Type -Path $AngleSharpAssemblyPath
# Get unique key to generate direct link
# Create parser object
$angleparser = New-Object -TypeName AngleSharp.Html.Parser.HtmlParser
# Trying to find correct APK link (not BUNDLE)
# https://www.apkmirror.com/apk/google-inc/youtube/
$apkMirrorLink = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported.replace('.', '-'))-release/"
$Parameters = @{
Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupportedYT)-release/youtube-$($LatestSupportedYT)-2-android-apk-download/"
Uri = $apkMirrorLink
UseBasicParsing = $false # Disabled
Verbose = $true
}
$Request = Invoke-Webrequest @Parameters
$Parsed = (New-Object -TypeName AngleSharp.Html.Parser.HtmlParser).ParseDocument($Request.Content)
$Parsed = $angleparser.ParseDocument($Request.Content)
$Parsed.All | Where-Object -FilterScript {$_.ClassName -match "table-row headerFont"} | ForEach-Object -Process {
foreach($child in $_.children)
{
if ($child.InnerHtml -eq "nodpi")
{
$apkPackageLink = (($_.getElementsByTagName("a") | Select-Object -First 1).Href).Substring(57)
break
}
}
}
$apkMirrorLink += $apkPackageLink # actual APK link (not BUNDLE)
# Get unique key to generate direct link
$Parameters = @{
Uri = $apkMirrorLink
UseBasicParsing = $false # Disabled
Verbose = $true
}
$Request = Invoke-Webrequest @Parameters
$Parsed = $angleparser.ParseDocument($Request.Content)
$Key = $Parsed.All | Where-Object -FilterScript {$_.ClassName -match "accent_bg btn btn-flat downloadButton"} | ForEach-Object -Process {$_.Search}
$Parameters = @{
Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupportedYT)-release/youtube-$($LatestSupportedYT)-2-android-apk-download/download/$($Key)"
Uri = $apkMirrorLink + "download/$($Key)"
UseBasicParsing = $true
Verbose = $true
}
$Request = Invoke-Webrequest @Parameters
$Parsed = (New-Object -TypeName AngleSharp.Html.Parser.HtmlParser).ParseDocument($Request.Content)
$Parsed = $angleparser.ParseDocument($Request.Content)
$Key = ($Parsed.All | Where-Object -FilterScript { $_.InnerHtml -eq "here" }).Search
# Finally, get the real link
@@ -42,4 +83,4 @@ $Parameters = @{
}
Invoke-Webrequest @Parameters
echo "LatestSupportedYT=$LatestSupportedYT" >> $env:GITHUB_ENV
echo "LatestSupportedYT=$LatestSupported" >> $env:GITHUB_ENV

View File

@@ -4,8 +4,9 @@ $Parameters = @{
UseBasicParsing = $true
Verbose = $true
}
$URL = (Invoke-RestMethod @Parameters).architecture."64bit".url
$ZuluTag = (Invoke-RestMethod @Parameters).version
$apiResult = Invoke-RestMethod @Parameters
$URL = $apiResult.architecture."64bit".url
$TAG = $apiResult.version
$Parameters = @{
Uri = $URL
Outfile = "Temp\jdk_windows-x64_bin.zip"
@@ -14,7 +15,7 @@ $Parameters = @{
}
Invoke-RestMethod @Parameters
echo "ZuluTag=$ZuluTag" >> $env:GITHUB_ENV
echo "ZuluTag=$TAG" >> $env:GITHUB_ENV
Write-Verbose -Message "Expanding Zulu JDK" -Verbose