Skip to content

Commit

Permalink
Merge branch 'release/0.6.0' into 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
mikooomich authored Sep 3, 2024
2 parents 695f0be + c585c46 commit a64a9c3
Show file tree
Hide file tree
Showing 125 changed files with 7,183 additions and 2,945 deletions.
48 changes: 48 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Building
For most users, we recommend importing and building through Android Studio.

## Build variants
There are the following build variants
```
universal (all architectures)
arm64 (arm64-v8a)
uncommonabi (armeabi-v7a, x86, x86_64)
x86_64
```
**For most users, the `universal` variant is sufficient.** The other build varients may reduce file size, however at the cost of compatibility.


## Building with FFmpeg binaries

By default, we ship a prebuilt library (`/app/prebuilt/ffMetadataEx.arr`), and you *DO NOT* need to care about this.
However, should you choose to opt for self built libraries and/or work on the extractor itself, keep reading:

1. First you will need to setup the [Android NDK](https://developer.android.com/studio/projects/install-ndk)

2. We use FFMpeg to extract metadata from local files. The FFMpeg binaries must be resolved in one of two ways:

- a) Build libraries yourself. Clone [ffmpeg-android-maker](https://github.com/Javernaut/ffmpeg-android-maker) into `/ffMetadataEx/src/main/cpp/ffmpeg-android-maker`, run the build script. Note: It may be helpful to modify the FFmpeg build script disable uneeded FFmpeg fetaures to reduce app size, see [here](https://github.com/mikooomich/ffmpeg-android-maker/blob/master/scripts/ffmpeg/build.sh) for an example.

- b) Use prebuilt FFmpeg libraries. Clone [prebuilt ffmpeg-android-maker](https://github.com/mikooomich/ffmpeg-android-maker-prebuilt) into `/ffMetadataEx/src/main/cpp/ffmpeg-android-maker`.

3. Modify `app/build.gradle.kts` and `settings.gradle.kts` to switch to the self built version, with the instructions being in both of the files.

4. start the build are you normally would.


<br/><br/>

# Contributing to OuterTune

## Submitting a pull request
- One pull request for one feature/issue, do not tackle unrelated features/issues in one pull request
- Write a descriptive title and a meaningful description
- Upload images/video for any UI changes
- In the event of merge conflicts, you may be required to rebase onto the current `dev` branch
- **You are required to build and test the app before submitting a pull request**

## Translations

Follow the [instructions](https://developer.android.com/guide/topics/resources/localization) and
create a pull request. **You are also required to build the app beforehand** and make sure there is no error
before you create a pull request.
52 changes: 16 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

<img src="./assets/outertune.webp" height="72">

A Material 3 YouTube Music client for Android

> This is a fork of [InnerTune](https://github.com/z-huang/InnerTune)
A Material 3 YouTube Music client & local music player for Android

[![Latest release](https://img.shields.io/github/v/release/DD3Boh/OuterTune?include_prereleases)](https://github.com/DD3Boh/OuterTune/releases)
[![License](https://img.shields.io/github/license/DD3Boh/OuterTune)](https://www.gnu.org/licenses/gpl-3.0)
Expand All @@ -14,21 +12,20 @@ A Material 3 YouTube Music client for Android

## Features

OuterTune is a supercharged fork of [InnerTune](https://github.com/z-huang/InnerTune), with advanced account synchronization, local media playback, multiple queues, and a new take on UI design.

- Play, search, and save all your songs, videos, albums, and playlists from YouTube Music
- Background playback & AD free
- Advanced account sync
- Song downloading for offline playback
- Background playback & AD free
- New integrated library screen design & Multiple queues
- Advanced account synchronization
- YouTube Music account login support
- Fully fledged syncing of songs, playlists and albums — both to and from your account
- Library management
- Cache and download songs for offline playback
- Personalized quick picks
- Local media playback
- Fully fledged syncing of songs, subscriptions, playlists and albums — both to and from your account
- Local audio file playback
- Play local and Youtube Music songs at the same time
- We don't use MediaStore's broken metadata extractor!
- We don't use MediaStore's broken metadata extractor! (e.g tags delimited with `\\` now show up properly)
- Synchronized lyrics (LRC format, also includes multi-line support)
- Audio normalization, tempo/pitch adjustment, and various other audio effects
- Dynamic Material theme & localization
- New integrated library screen design
- Android Auto support

## Screenshots
Expand Down Expand Up @@ -58,28 +55,9 @@ recommend [Pano Scrobbler](https://play.google.com/store/apps/details?id=com.arn
2. In the three dots menu at the top-right of the screen, click "Developer settings"
3. Enable "Unknown sources"

## Contributing Translations

Follow the [instructions](https://developer.android.com/guide/topics/resources/localization) and
create a pull request. If possible, please build the app beforehand and make sure there is no error
before you create a pull request.
./app/src/main/java/com/dd3boh/outertune/utils/scanners/jni/ffmpeg-android-maker
## Building with FFmpeg (non-kit)

By default, we ship a prebuilt library (`/app/prebuilt/ffMetadataEx.arr`), and you *do not* need to care about this.
However, should you choose to opt for self built libraries and/or work on the extractor itself, keep reading:
## Building & Contributing

1. First you will need to setup the [Android NDK](https://developer.android.com/studio/projects/install-ndk)

2. We use FFMpeg to extract metadata from local files. The FFMpeg (non-kit) implementation must be resolved in one of two ways:

- a) Build libraries. Clone [ffmpeg-android-maker](https://github.com/Javernaut/ffmpeg-android-maker) into `/ffMetadataEx/src/main/cpp/ffmpeg-android-maker`, run the build script. Note: It may be helpful to modify the FFmpeg build script disable uneeded FFmpeg fetaures to reduce app size, see [here](https://github.com/mikooomich/ffmpeg-android-maker/blob/master/scripts/ffmpeg/build.sh) for an example.

- b) Use prebuilt FFmpeg libraries. Clone [prebuilt ffmpeg-android-maker](https://github.com/mikooomich/ffmpeg-android-maker-prebuilt) into `/ffMetadataEx/src/main/cpp/ffmpeg-android-maker`.

3. Modify `app/build.gradle.kts` and `settings.gradle.kts` to switch to the self built version, with the instructions being in both of the files

Then start the build are you normally would.
We are looking for contrubutors, translators, and maintainers! If you would like to help out, or just wish to build the app yourself, please see the [building and contribution notes](./CONTRIBUTING.md).

## Donate

Expand All @@ -88,7 +66,9 @@ including bug fixes and new features.

<a href="https://paypal.me/DD3Boh"><img src="./assets/paypal.png" alt="PayPal" height="60" ></a>

## Credit
## Attribution

I want to give credit to [z-huang/InnerTune](https://github.com/z-huang/InnerTune) for providing
[z-huang/InnerTune](https://github.com/z-huang/InnerTune) for providing
an awesome base for this fork, none of this would have been possible without it.

[Musicolet](https://play.google.com/store/apps/details?id=in.krosbits.musicolet) for inspiration of a local music player experience done right.
8 changes: 5 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,21 @@ plugins {

android {
namespace = "com.dd3boh.outertune"
compileSdk = 34
compileSdk = 35

defaultConfig {
applicationId = "com.dd3boh.outertune"
minSdk = 24
targetSdk = 34
versionCode = 20
versionName = "0.6.0-beta1"
versionCode = 21
versionName = "0.6.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
isCrunchPngs = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
debug {
Expand Down Expand Up @@ -160,6 +161,7 @@ dependencies {

implementation(projects.innertube)
implementation(projects.kugou)
implementation(projects.lrclib)

coreLibraryDesugaring(libs.desugaring)

Expand Down
Binary file modified app/prebuilt/ffMetadataEx-release.aar
Binary file not shown.
Loading

0 comments on commit a64a9c3

Please sign in to comment.