diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index 0616b9a..6216267 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -52,8 +52,8 @@ jobs: & $JavaPath ` -jar "Temp\revanced-cli.jar" ` --apk "Temp\youtube.apk" ` - --bundles "Temp\revanced-patches.jar" ` - --merge "Temp\app-release-unsigned.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" ` @@ -76,7 +76,8 @@ jobs: $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 }}") # https://trstringer.com/github-actions-multiline-strings/ - echo "::set-output name=RELEASE_BODY::$Release" + # echo "::set-output name=RELEASE_BODY::$Release" + echo "RELEASE_BODY=$Release" >> $GITHUB_OUTPUT $ReleaseName = Get-Date -f "yyyy.MM.dd" echo "RELEASE_NAME=$ReleaseName" >> $env:GITHUB_ENV diff --git a/Build.ps1 b/Build.ps1 index be2cf29..93f30c8 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -1,36 +1,36 @@ <# - .SYNOPSIS - Build ReVanced app using latest components: - * YouTube (latest supported); - * ReVanced CLI; - * ReVanced Patches; - * ReVanced Integrations; - * microG GmsCore; - * Azul Zulu. + .SYNOPSIS + Build ReVanced app using latest components: + * YouTube (latest supported); + * ReVanced CLI; + * ReVanced Patches; + * ReVanced Integrations; + * microG GmsCore; + * Azul Zulu. - .NOTES - After compiling, microg.apk and compiled revanced.apk will be located in "Downloads folder\ReVanced" + .NOTES + After compiling, microg.apk and compiled revanced.apk will be located in "Script location folder folder\ReVanced" - .LINKS - https://github.com/revanced + .LINKS + https://github.com/revanced #> -#Requires -Version 5.1 +# 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 -# Download all files to "Downloads folder\ReVanced" -$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" -if (-not (Test-Path -Path "$DownloadsFolder\ReVanced")) +# Download all files to "Script location folder\ReVanced" +$WorkingFolder = Split-Path $MyInvocation.MyCommand.Path -Parent +if (-not (Test-Path -Path "$WorkingFolder\ReVanced")) { - New-Item -Path "$DownloadsFolder\ReVanced" -ItemType Directory -Force + 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 $Parameters = @{ - Uri = "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json" - UseBasicParsing = $true + Uri = "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json" + UseBasicParsing = $true } $JSON = Invoke-RestMethod @Parameters $versions = ($JSON | Where-Object -FilterScript {$_.compatiblePackages.name -eq "com.google.android.youtube"}).compatiblePackages.versions @@ -40,17 +40,17 @@ $LatestSupported = $LatestSupported.replace(".", "-") # 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/" - UseBasicParsing = $false # Disabled - Verbose = $true + Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported)-release/youtube-$($LatestSupported)-2-android-apk-download/" + UseBasicParsing = $false # Disabled + Verbose = $true } $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)" - UseBasicParsing = $false # Disabled - Verbose = $true + Uri = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-$($LatestSupported)-release/youtube-$($LatestSupported)-2-android-apk-download/download/$($nameProp)" + UseBasicParsing = $false # Disabled + Verbose = $true } $URL_Part = ((Invoke-Webrequest @Parameters).Links | Where-Object -FilterScript {$_.innerHTML -eq "here"}).href # Replace "&" with "&" to make it work @@ -58,112 +58,119 @@ $URL_Part = $URL_Part.Replace("&", "&") # Finally, get the real link $Parameters = @{ - Uri = "https://www.apkmirror.com$URL_Part" - OutFile = "$DownloadsFolder\ReVanced\youtube.apk" - UseBasicParsing = $true - Verbose = $true + Uri = "https://www.apkmirror.com$URL_Part" + OutFile = "$WorkingFolder\ReVanced\youtube.apk" + UseBasicParsing = $true + Verbose = $true } Invoke-Webrequest @Parameters # https://github.com/revanced/revanced-cli $Parameters = @{ - Uri = "https://api.github.com/repos/revanced/revanced-cli/releases/latest" - UseBasicParsing = $true - Verbose = $true + 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", "") $Parameters = @{ - Uri = "https://github.com/revanced/revanced-cli/releases/download/$Tag/revanced-cli-$Tag2-all.jar" - Outfile = "$DownloadsFolder\ReVanced\revanced-cli.jar" - UseBasicParsing = $true - Verbose = $true + Uri = "https://github.com/revanced/revanced-cli/releases/download/$Tag/revanced-cli-$Tag2-all.jar" + Outfile = "$WorkingFolder\ReVanced\revanced-cli.jar" + UseBasicParsing = $true + Verbose = $true } Invoke-RestMethod @Parameters # https://github.com/revanced/revanced-patches $Parameters = @{ - Uri = "https://api.github.com/repos/revanced/revanced-patches/releases/latest" - UseBasicParsing = $true - Verbose = $true + 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", "") $Parameters = @{ - Uri = "https://github.com/revanced/revanced-patches/releases/download/$Tag/revanced-patches-$Tag2.jar" - Outfile = "$DownloadsFolder\ReVanced\revanced-patches.jar" - UseBasicParsing = $true - Verbose = $true + 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 + Uri = "https://api.github.com/repos/revanced/revanced-integrations/releases/latest" + UseBasicParsing = $true + Verbose = $true } -$Tag = (Invoke-RestMethod @Parameters).tag_name +# $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/app-release-unsigned.apk" - Outfile = "$DownloadsFolder\ReVanced\app-release-unsigned.apk" - UseBasicParsing = $true - Verbose = $true + # Uri = "https://github.com/revanced/revanced-integrations/releases/download/$Tag/revanced-integrations-$Tag2.apk" + Uri = $URL + Outfile = "$WorkingFolder\ReVanced\revanced-integrations.apk" + UseBasicParsing = $true + Verbose = $true } Invoke-RestMethod @Parameters # https://github.com/TeamVanced/VancedMicroG $Parameters = @{ - Uri = "https://api.github.com/repos/TeamVanced/VancedMicroG/releases/latest" - UseBasicParsing = $true - Verbose = $true + Uri = "https://api.github.com/repos/TeamVanced/VancedMicroG/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 = "$DownloadsFolder\ReVanced\microg.apk" - UseBasicParsing = $true - Verbose = $true + Uri = "https://github.com/TeamVanced/VancedMicroG/releases/download/$Tag/microg.apk" + Outfile = "$WorkingFolder\ReVanced\microg.apk" + UseBasicParsing = $true + Verbose = $true } Invoke-RestMethod @Parameters # https://github.com/ScoopInstaller/Java/blob/master/bucket/zulu-jdk.json $Parameters = @{ - Uri = "https://raw.githubusercontent.com/ScoopInstaller/Java/master/bucket/zulu-jdk.json" - UseBasicParsing = $true - Verbose = $true + Uri = "https://raw.githubusercontent.com/ScoopInstaller/Java/master/bucket/zulu-jdk.json" + UseBasicParsing = $true + Verbose = $true } $URL = (Invoke-RestMethod @Parameters).architecture."64bit".url $Parameters = @{ - Uri = $URL - Outfile = "$DownloadsFolder\ReVanced\jdk_windows-x64_bin.zip" - UseBasicParsing = $true - Verbose = $true + Uri = $URL + Outfile = "$WorkingFolder\ReVanced\jdk_windows-x64_bin.zip" + UseBasicParsing = $true + Verbose = $true } Invoke-RestMethod @Parameters # Expand jdk_windows-x64_bin archive $Parameters = @{ - Path = "$DownloadsFolder\ReVanced\jdk_windows-x64_bin.zip" - DestinationPath = "$DownloadsFolder\ReVanced\jdk_windows-x64_bin" - Force = $true - Verbose = $true + Path = "$WorkingFolder\ReVanced\jdk_windows-x64_bin.zip" + DestinationPath = "$WorkingFolder\ReVanced\jdk" + Force = $true + Verbose = $true } Expand-Archive @Parameters -Remove-Item -Path "$DownloadsFolder\ReVanced\jdk_windows-x64_bin.zip" -Force +Remove-Item -Path "$WorkingFolder\ReVanced\jdk_windows-x64_bin.zip" -Force # https://github.com/revanced/revanced-patches -& "$DownloadsFolder\ReVanced\jdk_windows-x64_bin\zulu*win_x64\bin\java.exe" ` --jar "$DownloadsFolder\ReVanced\revanced-cli.jar" ` ---apk "$DownloadsFolder\ReVanced\youtube.apk" ` ---bundles "$DownloadsFolder\ReVanced\revanced-patches.jar" ` ---merge "$DownloadsFolder\ReVanced\app-release-unsigned.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 "$DownloadsFolder\ReVanced\Temp" ` ---out "$DownloadsFolder\ReVanced\revanced.apk" +--temp-dir "$WorkingFolder\ReVanced\Temp" ` +--out "$WorkingFolder\ReVanced\revanced.apk" -Invoke-Item -Path "$DownloadsFolder\ReVanced" +# Open working directory with builded files +# Invoke-Item -Path "$WorkingFolder\ReVanced" -Write-Warning -Message "Latest available revanced.apk & microg.apk are ready in `"$DownloadsFolder\ReVanced`"" +# Remove temp directory, because cli failed to clean up directory +Remove-Item -Path "$WorkingFolder\ReVanced\Temp" -Recurse -Force -Confirm:$false + +Write-Warning -Message "Latest available revanced.apk & microg.apk are ready in `"$WorkingFolder\ReVanced`"" diff --git a/README.md b/README.md index 4019f6b..5e2b07a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # ReVanced builder @@ -6,7 +6,7 @@ Build ReVanced package (.apk) easily than ever using latest ReVanced patches and ## Usage -* To build `revanced.apk` locally you need just to run [`Build.ps1`](https://github.com/farag2/ReVanced_Builder/blob/main/Build.ps1) via PowerShell; +* 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`: * always-autorepeat * enable-wide-searchbar @@ -14,17 +14,16 @@ Build ReVanced package (.apk) easily than ever using latest ReVanced patches and * 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 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 `Downloads folder\ReVanced`; +* 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 [Release.md](https://github.com/far…r/blob/main/Release.md) template. ## By using CI/CD ```powershell -git clone https://github.com/farag2/ReVanced_Builder +git clone https://github.com/JDM170/ReVanced_Builder ``` -Trigger the [`Build`](https://github.com/farag2/ReVanced_Builder/actions/workflows/Build.yml) Action manually to create [release page](https://github.com/farag2/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) @@ -35,7 +34,7 @@ Trigger the [`Build`](https://github.com/farag2/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/farag2/ReVanced_Builder/blob/de0b988f3be738bfd6ea4bad3b3be91aee20aceb/.github/workflows/Build.yml#L23) code from Actions (it's run in PowerShell 7). + * 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). ## Links diff --git a/Scripts/ReVanced_Intergrations.ps1 b/Scripts/ReVanced_Intergrations.ps1 index 94a6f05..9a51c72 100644 --- a/Scripts/ReVanced_Intergrations.ps1 +++ b/Scripts/ReVanced_Intergrations.ps1 @@ -4,10 +4,13 @@ $Parameters = @{ UseBasicParsing = $true Verbose = $true } -$IntegrationsTag = (Invoke-RestMethod @Parameters).tag_name +# $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/$IntegrationsTag/app-release-unsigned.apk" - Outfile = "Temp\app-release-unsigned.apk" + # Uri = "https://github.com/revanced/revanced-integrations/releases/download/$Tag/revanced-integrations-$Tag2.apk" + Uri = $URL + Outfile = "Temp\revanced-integrations.apk" UseBasicParsing = $true Verbose = $true } diff --git a/Scripts/ReVanced_Patches.ps1 b/Scripts/ReVanced_Patches.ps1 index 381aa37..2534d2b 100644 --- a/Scripts/ReVanced_Patches.ps1 +++ b/Scripts/ReVanced_Patches.ps1 @@ -1,4 +1,3 @@ - # https://github.com/revanced/revanced-patches $Parameters = @{ Uri = "https://api.github.com/repos/revanced/revanced-patches/releases/latest"