Skip to content

Commit

Permalink
Merge pull request #43 from jellyflix-app/development
Browse files Browse the repository at this point in the history
New Prerelease
  • Loading branch information
jdk-21 authored Mar 12, 2024
2 parents 7580a84 + 7b194b3 commit 4f89c62
Show file tree
Hide file tree
Showing 43 changed files with 2,887 additions and 544 deletions.
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/issue report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ body:
description: What version of Jellyflix are you running?
options:
- 0.9.13
- 0.10.x
- 0.11.x
- 0.12.x
- Other
validations:
required: true
Expand All @@ -45,6 +48,7 @@ body:
description: What version of Jellyfin are you running?
options:
- 10.8.13
- 10.9.x
- Other
validations:
required: true
Expand Down
45 changes: 38 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,47 @@
# Jellyflix - Another Jellyfin client
[![](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://matrix.to/#/%23jellyflix%3Amatrix.org)

Jellyflix is a cross platform Jellyfin Client for Desktop (Mac, Windows, Linux) and Mobile (iOS, Android). It aims to be a simple to use and reliable Jellyfin client for video content. It supports downloads (coming soon).
Jellyflix is a cross platform Jellyfin Client for Desktop (Mac, Windows, Linux) and Mobile (iOS, Android). It aims to be a simple to use and reliable Jellyfin client for video content. It supports transcoded downloads and much more.

## Features
- Browse and watch your video content
- Cross-platform (iOS, Android, macOS, Windows, Linux, Web)
- Supports a wide variety of media formats
- Download (transcoded) media for offline usage
- Tonemapping support for HDR content
- Save items you want to watch in your watchlist
- Profiles for different users and servers
- Quick connect support

## Download
Jellyflix is available for all major platforms. You can download them from the following links or from the [releases](https://github.com/jellyflix-app/jellyflix/releases) page. On this page you can also find pre-release builds.
### iOS
[![](https://img.shields.io/badge/App_Store-0D96F6?style=for-the-badge&logo=app-store&logoColor=white)](https://apps.apple.com/de/app/jellyflix/id6476043683)

Beta-Builds are available on Testflight. Join Testflight [here](https://testflight.apple.com/join/Nc1Jw9tc).

### Android
[![](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix.apk)

Google Play and F-Droid coming soon
### macOS

[![](https://img.shields.io/badge/App_Store-0D96F6?style=for-the-badge&logo=app-store&logoColor=white)](https://apps.apple.com/de/app/jellyflix/id6476043683)

Note: There is a native .dmg file available, but there are login issues after notarization. As a workaround, you can use the iOS app on macOS. The iOS version looks and works the same as the macOS app.

### Windows
[![](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix-windows.zip)

### Linux
[![](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix-linux.zip)

The Linux version needs additional dependencies, see [below](#linux).

### Web
[![](https://img.shields.io/badge/Web-000000?style=for-the-badge&logo=web&logoColor=white)](https://jellyflix.kiejon.com)

- [iOS](https://testflight.apple.com/join/Nc1Jw9tc) (Testflight) (App Store coming soon)
- [Android](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix.apk) (Google Play coming soon)
- [macOS](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix.dmg)
- [Windows](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix-windows.zip) (untested)
- [Linux](https://github.com/jellyflix-app/jellyflix/releases/latest/download/jellyflix-linux.zip) (needs additional dependencies, see [below](#linux))
- [Web](https://jellyflix.kiejon.com) (technically works, but it's only intended for demo usage)
The web version is only intended for demo usage and doesn't support all the features.

## Contribute
Contributions are much appreciated. You can help the development by:
Expand Down
17 changes: 17 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,23 @@ android {
signingConfig signingConfigs.release
}
}

flavorDimensions "deploy"

productFlavors {
fdroid {
dimension "deploy"
signingConfig null
}
}

android.applicationVariants.all { variant ->
if (variant.flavorName == "fdroid") {
variant.outputs.all { output ->
output.outputFileName = "app-fdroid-release.apk"
}
}
}
}

flutter {
Expand Down
97 changes: 56 additions & 41 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,56 +1,71 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.software.leanback"
android:required="false" />
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:label="Jellyflix"
android:name="${applicationName}"
android:banner="@drawable/banner"
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
android:required="false" />
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:label="Jellyflix"
android:name="${applicationName}"
android:banner="@drawable/banner"
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!--
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!--
Internet access permissions.
-->
<uses-permission android:name="android.permission.INTERNET" />
<!--
<uses-permission android:name="android.permission.INTERNET" />
<!--
Media access permissions.
Android 13 or higher.
https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions
-->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!--
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!--
Storage access permissions.
Android 12 or lower.
-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<!-- Flutter Downloader config -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

<provider
android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
android:authorities="${applicationId}.flutter_downloader.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>

</manifest>
40 changes: 20 additions & 20 deletions ios/Flutter/AppFrameworkInfo.plist
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,25 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
</dict>
</plist>
2 changes: 1 addition & 1 deletion ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
# platform :ios, '13.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
10 changes: 8 additions & 2 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
PODS:
- background_downloader (0.0.1):
- Flutter
- device_info_plus (0.0.1):
- Flutter
- Flutter (1.0.0)
Expand Down Expand Up @@ -32,6 +34,7 @@ PODS:
- Flutter

DEPENDENCIES:
- background_downloader (from `.symlinks/plugins/background_downloader/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- Flutter (from `Flutter`)
- flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`)
Expand All @@ -49,6 +52,8 @@ DEPENDENCIES:
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)

EXTERNAL SOURCES:
background_downloader:
:path: ".symlinks/plugins/background_downloader/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
Flutter:
Expand Down Expand Up @@ -81,8 +86,9 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/wakelock_plus/ios"

SPEC CHECKSUMS:
background_downloader: 9f788ffc5de45acf87d6380e91ca0841066c18cf
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_downloader: b7301ae057deadd4b1650dc7c05375f10ff12c39
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1
Expand All @@ -97,6 +103,6 @@ SPEC CHECKSUMS:
volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47

PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189
PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796

COCOAPODS: 1.14.3
Loading

0 comments on commit 4f89c62

Please sign in to comment.