Compare commits
1 Commits
feat/andro
...
v2.0.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
531c6f708d |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -1,3 +1,23 @@
|
|||||||
|
## [2.0.4](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.3...v2.0.4) (2023-04-11)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* disable BlurView on Android as it crashes the app ([1648389](https://github.com/leinelissen/jellyfin-audio-player/commit/1648389ccce088e6836bcad31bd5c3b7cb996a78))
|
||||||
|
* linter issue ([a8c0003](https://github.com/leinelissen/jellyfin-audio-player/commit/a8c0003fc13cb7d4778f65e8702b1c3c5fd1cc59))
|
||||||
|
* linting issue ([2f45f86](https://github.com/leinelissen/jellyfin-audio-player/commit/2f45f868c8cc8a7f4308282b672d1d487f480c0a))
|
||||||
|
* only set signingConfig to release when a keystore is available ([74d82eb](https://github.com/leinelissen/jellyfin-audio-player/commit/74d82eb77a412ba84d0820abbad84ac304c62611))
|
||||||
|
* use debug signing config when not having a keystore ([a532154](https://github.com/leinelissen/jellyfin-audio-player/commit/a532154ce023ba2eecbbc3c8d7bbe08bcca0cd57))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Add base Android content for F-Droid and Play Store ([ba805e0](https://github.com/leinelissen/jellyfin-audio-player/commit/ba805e061e56d719b18cfd8a6bafccf9174110b8))
|
||||||
|
* add fallback images when album cover isn't available ([0a0c78f](https://github.com/leinelissen/jellyfin-audio-player/commit/0a0c78f3d592e0d92a6bb3fd605810e0af1441bb))
|
||||||
|
* setup Fastlane for Google Play Store ([cc14373](https://github.com/leinelissen/jellyfin-audio-player/commit/cc14373575a844458737ac6f0a6e8d8ea783ce75))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [2.0.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.2...v2.0.3) (2023-02-28)
|
## [2.0.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.2...v2.0.3) (2023-02-28)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -138,10 +138,9 @@ android {
|
|||||||
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
|
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 15
|
versionCode 16
|
||||||
versionName "2.0.3"
|
versionName "2.0.4"
|
||||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
|
|
||||||
if (isNewArchitectureEnabled()) {
|
if (isNewArchitectureEnabled()) {
|
||||||
// We configure the CMake build only if you decide to opt-in for the New Architecture.
|
// We configure the CMake build only if you decide to opt-in for the New Architecture.
|
||||||
@@ -282,21 +281,6 @@ dependencies {
|
|||||||
exclude group:'com.facebook.flipper'
|
exclude group:'com.facebook.flipper'
|
||||||
}
|
}
|
||||||
|
|
||||||
// fastlane screengrab, falcon is a dependency of screengrab
|
|
||||||
androidTestImplementation 'com.jraska:falcon:2.2.0'
|
|
||||||
androidTestImplementation "tools.fastlane:screengrab:2.1.0"
|
|
||||||
// Espresso dependencies
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
|
||||||
// Hamcrest library
|
|
||||||
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
|
|
||||||
|
|
||||||
// Core library
|
|
||||||
androidTestImplementation 'androidx.test:core:1.4.0'
|
|
||||||
|
|
||||||
// AndroidJUnitRunner and JUnit Rules
|
|
||||||
androidTestImplementation 'androidx.test:runner:1.4.0'
|
|
||||||
androidTestImplementation 'androidx.test:rules:1.4.0'
|
|
||||||
|
|
||||||
if (enableHermes) {
|
if (enableHermes) {
|
||||||
//noinspection GradleDynamicVersion
|
//noinspection GradleDynamicVersion
|
||||||
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
|
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
|
||||||
|
|||||||
@@ -1,105 +0,0 @@
|
|||||||
package nl.moeilijkedingen.jellyfinaudioplayer;
|
|
||||||
|
|
||||||
import androidx.test.rule.ActivityTestRule;
|
|
||||||
|
|
||||||
import nl.moeilijkedingen.jellyfinaudioplayer.R;
|
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.ClassRule;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.junit.runners.JUnit4;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
import tools.fastlane.screengrab.Screengrab;
|
|
||||||
import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy;
|
|
||||||
import tools.fastlane.screengrab.cleanstatusbar.BluetoothState;
|
|
||||||
import tools.fastlane.screengrab.cleanstatusbar.CleanStatusBar;
|
|
||||||
import tools.fastlane.screengrab.cleanstatusbar.MobileDataType;
|
|
||||||
import tools.fastlane.screengrab.locale.LocaleTestRule;
|
|
||||||
|
|
||||||
import androidx.test.espresso.NoMatchingViewException;
|
|
||||||
|
|
||||||
import static androidx.test.espresso.Espresso.onView;
|
|
||||||
import static androidx.test.espresso.action.ViewActions.click;
|
|
||||||
import static androidx.test.espresso.action.ViewActions.typeText;
|
|
||||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.withText;
|
|
||||||
|
|
||||||
import static org.hamcrest.core.AllOf.allOf;
|
|
||||||
|
|
||||||
@RunWith(JUnit4.class)
|
|
||||||
public class ScreenshotTest {
|
|
||||||
@ClassRule
|
|
||||||
public static final LocaleTestRule localeTestRule = new LocaleTestRule();
|
|
||||||
|
|
||||||
@Rule
|
|
||||||
public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
|
|
||||||
|
|
||||||
@BeforeClass
|
|
||||||
public static void beforeAll() {
|
|
||||||
Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
|
|
||||||
CleanStatusBar.enableWithDefaults();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
|
||||||
public static void afterAll() {
|
|
||||||
CleanStatusBar.disable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Custom wait function. In order to make sure each button press yields a
|
|
||||||
desirable screen, we use the wait function to delay further actions until
|
|
||||||
the current one has achieved its purpose.
|
|
||||||
|
|
||||||
`duration` indicates the amount of milli-seconds to wait. The value of
|
|
||||||
`duration` is acquired by emperical trial-and-error.
|
|
||||||
*/
|
|
||||||
public void wait(int duration) {
|
|
||||||
try {
|
|
||||||
Thread.sleep(duration);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void inputText(Integer id, String text) {
|
|
||||||
try {
|
|
||||||
onView(allOf(withId(id))).perform(typeText(text));
|
|
||||||
} catch (NoMatchingViewException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testTakeScreenshot() {
|
|
||||||
System.out.println("AVAILABLE IDS:" + Arrays.toString(R.id.class.getFields()));
|
|
||||||
// wait(10000);
|
|
||||||
|
|
||||||
// Screengrab.screenshot("04RecentAlbums");
|
|
||||||
// onView(allOf(withId(R.id.all_albums))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// Screengrab.screenshot("05AlbumsScreen");
|
|
||||||
|
|
||||||
// onView(allOf(withId(R.id.search_tab))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// onView(allOf(withId(R.id.search_input_container))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// onView(allOf(withId(R.id.search_input_textinput))).perform(typeText("bicep"));
|
|
||||||
// wait(5000);
|
|
||||||
|
|
||||||
// onView(allOf(withId(R.id.search_result_a644f8d23821601d2feb86ddae5e64f4))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// Screengrab.screenshot("02AlbumScreen");
|
|
||||||
|
|
||||||
// onView(allOf(withId(R.id.play_album))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// onView(allOf(withId(R.id.open_player_modal))).perform(click());
|
|
||||||
// wait(5000);
|
|
||||||
// Screengrab.screenshot("01PlayModal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,18 +3,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||||
<uses-permission android:name="android.permission.DUMP"/>
|
|
||||||
|
|
||||||
<!-- Allows unlocking your device and activating its screen so UI tests can succeed -->
|
|
||||||
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
|
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
|
||||||
|
|
||||||
<!-- Allows for storing and retrieving screenshots -->
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
<!-- Allows changing locales -->
|
|
||||||
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:networkSecurityConfig="@xml/react_native_config"
|
android:networkSecurityConfig="@xml/react_native_config"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# Specifies the JVM arguments used for the daemon process.
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
# The setting is particularly useful for tweaking memory settings.
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
|
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
|
||||||
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m
|
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
|
||||||
|
|
||||||
# When configured, Gradle will run in incubating parallel mode.
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
|
|||||||
@@ -124,22 +124,4 @@ platform :android do
|
|||||||
)
|
)
|
||||||
upload_to_play_store
|
upload_to_play_store
|
||||||
end
|
end
|
||||||
|
|
||||||
lane :screenshots do
|
|
||||||
gradle(task: 'clean', project_dir: 'android/')
|
|
||||||
gradle(
|
|
||||||
task: 'assemble',
|
|
||||||
build_type: 'Debug',
|
|
||||||
project_dir: 'android/',
|
|
||||||
)
|
|
||||||
gradle(
|
|
||||||
task: 'assemble',
|
|
||||||
build_type: 'AndroidTest',
|
|
||||||
project_dir: 'android/',
|
|
||||||
)
|
|
||||||
capture_android_screenshots(
|
|
||||||
app_apk_path: "android/app/build/outputs/apk/debug/app-debug.apk",
|
|
||||||
tests_apk_path: "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -68,14 +68,6 @@ Generate beta build
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### android screenshots
|
|
||||||
|
|
||||||
```sh
|
|
||||||
[bundle exec] fastlane android screenshots
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||||
|
|||||||
@@ -606,7 +606,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 53;
|
CURRENT_PROJECT_VERSION = 55;
|
||||||
DEVELOPMENT_TEAM = 238P3C58WC;
|
DEVELOPMENT_TEAM = 238P3C58WC;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
@@ -643,7 +643,7 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 53;
|
CURRENT_PROJECT_VERSION = 55;
|
||||||
DEVELOPMENT_TEAM = 238P3C58WC;
|
DEVELOPMENT_TEAM = 238P3C58WC;
|
||||||
INFOPLIST_FILE = Fintunes/Info.plist;
|
INFOPLIST_FILE = Fintunes/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
@@ -799,7 +799,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 53;
|
CURRENT_PROJECT_VERSION = 55;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
DEVELOPMENT_TEAM = 238P3C58WC;
|
DEVELOPMENT_TEAM = 238P3C58WC;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
@@ -832,7 +832,7 @@
|
|||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 53;
|
CURRENT_PROJECT_VERSION = 55;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
DEVELOPMENT_TEAM = 238P3C58WC;
|
DEVELOPMENT_TEAM = 238P3C58WC;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>53</string>
|
<string>55</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.0.3",
|
"version": "2.0.4",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.0.3",
|
"version": "2.0.4",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-native-async-storage/async-storage": "^1.17.11",
|
"@react-native-async-storage/async-storage": "^1.17.11",
|
||||||
"@react-native-community/blur": "^4.3.0",
|
"@react-native-community/blur": "^4.3.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.0.3",
|
"version": "2.0.4",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user