Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
52abc5d
remove all tasks and code related to it
Raival-e May 28, 2025
89ae535
remove all APK editor features and related files
Raival-e May 28, 2025
5b26a07
remove unused code
Raival-e May 28, 2025
c13f86d
Merge branch 'master' into tasks-refactor
Raival-e May 31, 2025
e9fb02c
remove unused libraries
Raival-e May 31, 2025
5f28d09
update libraries
Raival-e Jun 13, 2025
5a4644d
remove invalid translation file
Raival-e Jun 13, 2025
02bdca2
major refactor to tasks and other changes
Raival-e Jul 8, 2025
f4bda20
create a better logging system
Raival-e Jul 9, 2025
67d3ad8
fix lagging on manual seek in media players
Raival-e Jul 9, 2025
94694d1
use getActiveTab function
Raival-e Jul 9, 2025
fbf57b1
refactor time formatting in audio and video players
Raival-e Jul 9, 2025
71f7e85
remove unused function
Raival-e Jul 9, 2025
763ba42
remove unused strings and update log-related translations in multiple…
Raival-e Jul 9, 2025
31719fc
cleanup CopyTask and fix task progress indicator
Raival-e Jul 9, 2025
e99ce74
bring back APK bundle merge feature
Raival-e Jul 9, 2025
af9c679
removed unused variable
Raival-e Jul 9, 2025
326a786
fix logs screen navigation button
Raival-e Jul 10, 2025
0dafbba
new feature: customizing home tab layout
Raival-e Jul 10, 2025
f083c59
prevent disabling all home tab sections
Raival-e Jul 12, 2025
2fb8bbb
remove unused parameter
Raival-e Jul 12, 2025
33f68f1
new feature: ability to run tasks on background
Raival-e Jul 12, 2025
5e47715
remove unused function
Raival-e Jul 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -44,50 +44,59 @@ android {
}
}

composeCompiler {
enableStrongSkippingMode = true
}

dependencies {
implementation(libs.androidx.profileinstaller)
"baselineProfile"(project(":baselineprofile"))
implementation(libs.androidx.profileinstaller)
coreLibraryDesugaring(libs.desugar.jdk.libs)

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
// Local/File-based dependencies
implementation(files("libs/APKEditor.jar"))

// AndroidX - Core & Lifecycle
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.compose.android)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.material)

// Jetpack Compose
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.icons.extended)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.ui.tooling.preview.android)

// Other Jetpack & Android Libraries
implementation(libs.androidx.datastore)
implementation(libs.androidx.media3.exoplayer)
implementation(libs.androidx.media3.ui)
implementation(libs.androidx.palette.ktx)

// Sora Code Editor
implementation(libs.sora.editor)
implementation(libs.sora.editor.language.java)
implementation(libs.sora.editor.language.textmate)

// Image Loading - Coil
implementation(libs.coil.compose)
implementation(libs.coil.gif)
implementation(libs.coil.svg)
implementation(libs.coil.video)

implementation(libs.gson)
implementation(libs.androidx.datastore)

// Third-Party UI/Compose Utilities
implementation(libs.accompanist.systemuicontroller)
implementation(libs.cascade.compose)
implementation(libs.compose.swipebox)
implementation(libs.reorderable)
implementation(libs.storage)
implementation(libs.grid)
implementation(libs.lazycolumnscrollbar)
implementation(libs.reorderable)
implementation(libs.zoomable)
implementation(libs.androidx.media3.exoplayer)
implementation(libs.androidx.media3.ui)

// APKEditor
implementation(files("libs/APKEditor.jar"))
// Third-Party General Utilities
implementation(libs.apksig)
implementation(libs.commons.net)
implementation(libs.gson)
implementation(libs.storage)
implementation(libs.zip4j)
}
63 changes: 59 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" tools:node="remove"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-feature
android:glEsVersion="0x00020000"
Expand All @@ -23,6 +28,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.FileExplorer"
tools:targetApi="34" >
Expand Down Expand Up @@ -58,6 +64,26 @@
</intent-filter>
</activity>

<activity
android:name=".screen.viewer.text.TextViewerActivity"
android:exported="true"
android:label="@string/text_viewer"
android:theme="@style/Theme.FileExplorer"
android:windowSoftInputMode="adjustResize"
android:documentLaunchMode="intoExisting"
android:autoRemoveFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:mimeType="text/*" />
<data android:scheme="file" />
<data android:scheme="content" />
</intent-filter>
</activity>

<activity
android:name=".screen.viewer.image.ImageViewerActivity"
android:exported="true"
Expand All @@ -77,9 +103,9 @@
</activity>

<activity
android:name=".screen.viewer.media.MediaViewerActivity"
android:name=".screen.viewer.audio.AudioPlayerActivity"
android:exported="true"
android:label="@string/title_activity_media_viewer"
android:label="@string/title_activity_audio_player"
android:theme="@style/Theme.FileExplorer"
android:windowSoftInputMode="adjustResize"
android:documentLaunchMode="intoExisting"
Expand All @@ -88,25 +114,54 @@
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="video/*"/>
<data android:mimeType="audio/*"/>
<data android:scheme="file"/>
<data android:scheme="content"/>
</intent-filter>
</activity>

<activity
android:name=".screen.viewer.video.VideoPlayerActivity"
android:exported="true"
android:label="@string/title_activity_audio_player"
android:theme="@style/Theme.FileExplorer"
android:windowSoftInputMode="adjustResize"
android:documentLaunchMode="intoExisting"
android:autoRemoveFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:mimeType="video/*" />
<data android:scheme="file" />
<data android:scheme="content" />
</intent-filter>
</activity>

<activity
android:name=".screen.logs.LogsActivity"
android:exported="false"
android:label="@string/title_activity_logs"
android:theme="@style/Theme.FileExplorer"
android:windowSoftInputMode="adjustResize" />

<activity
android:name=".screen.main.MainActivity"
android:exported="true"
android:theme="@style/Theme.FileExplorer"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<service
android:name=".screen.main.tab.files.service.ContentOperationService"
android:foregroundServiceType="dataSync" />

<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.raival.compose.file.explorer.provider"
Expand Down
26 changes: 13 additions & 13 deletions app/src/main/baseline-prof.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1161,7 +1161,7 @@ HSPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landro
HSPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/core/Animatable;->access$clampToBounds(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->access$endAnimation(Landroidx/compose/animation/core/Animatable;)V
HSPLandroidx/compose/animation/core/Animatable;->access$setRunning(Landroidx/compose/animation/core/Animatable;Z)V
HSPLandroidx/compose/animation/core/Animatable;->access$setShowDialog(Landroidx/compose/animation/core/Animatable;Z)V
HSPLandroidx/compose/animation/core/Animatable;->access$setTargetValue(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/Animatable;->asState()Landroidx/compose/runtime/State;
HSPLandroidx/compose/animation/core/Animatable;->clampToBounds(Ljava/lang/Object;)Ljava/lang/Object;
Expand All @@ -1172,7 +1172,7 @@ HSPLandroidx/compose/animation/core/Animatable;->getTypeConverter()Landroidx/com
HSPLandroidx/compose/animation/core/Animatable;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/Animatable;->runAnimation(Landroidx/compose/animation/core/Animation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Animatable;->setRunning(Z)V
HSPLandroidx/compose/animation/core/Animatable;->setShowDialog(Z)V
HSPLandroidx/compose/animation/core/Animatable;->setTargetValue(Ljava/lang/Object;)V
Landroidx/compose/animation/core/Animatable$runAnimation$2;
HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;-><init>(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
Expand Down Expand Up @@ -1227,10 +1227,10 @@ HSPLandroidx/compose/animation/core/AnimationScope;->getLastFrameTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationScope;->getStartTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationScope;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationScope;->isRunning()Z
HSPLandroidx/compose/animation/core/AnimationScope;->getShowDialog()Z
HSPLandroidx/compose/animation/core/AnimationScope;->setFinishedTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationScope;->setLastFrameTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationScope;->setShowDialog$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationScope;->setValue$animation_core_release(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/AnimationScope;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
Landroidx/compose/animation/core/AnimationSpec;
Expand All @@ -1257,10 +1257,10 @@ HSPLandroidx/compose/animation/core/AnimationState;->getLastFrameTimeNanos()J
HSPLandroidx/compose/animation/core/AnimationState;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
HSPLandroidx/compose/animation/core/AnimationState;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationState;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationState;->isRunning()Z
HSPLandroidx/compose/animation/core/AnimationState;->getShowDialog()Z
HSPLandroidx/compose/animation/core/AnimationState;->setFinishedTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationState;->setLastFrameTimeNanos$animation_core_release(J)V
HSPLandroidx/compose/animation/core/AnimationState;->setRunning$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationState;->setShowDialog$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/AnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V
HSPLandroidx/compose/animation/core/AnimationState;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
Landroidx/compose/animation/core/AnimationStateKt;
Expand Down Expand Up @@ -1411,17 +1411,17 @@ HSPLandroidx/compose/animation/core/InfiniteTransition;->access$setStartTimeNano
PLandroidx/compose/animation/core/InfiniteTransition;->access$setStartTimeNanos$p(Landroidx/compose/animation/core/InfiniteTransition;J)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V
PLandroidx/compose/animation/core/InfiniteTransition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->isRunning()Z
PLandroidx/compose/animation/core/InfiniteTransition;->isRunning()Z
HSPLandroidx/compose/animation/core/InfiniteTransition;->getShowDialog()Z
PLandroidx/compose/animation/core/InfiniteTransition;->getShowDialog()Z
HSPLandroidx/compose/animation/core/InfiniteTransition;->onFrame(J)V
PLandroidx/compose/animation/core/InfiniteTransition;->onFrame(J)V
PLandroidx/compose/animation/core/InfiniteTransition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->run$animation_core_release(Landroidx/compose/runtime/Composer;I)V
PLandroidx/compose/animation/core/InfiniteTransition;->run$animation_core_release(Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->setRefreshChildNeeded(Z)V
PLandroidx/compose/animation/core/InfiniteTransition;->setRefreshChildNeeded(Z)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->setRunning(Z)V
PLandroidx/compose/animation/core/InfiniteTransition;->setRunning(Z)V
HSPLandroidx/compose/animation/core/InfiniteTransition;->setShowDialog(Z)V
PLandroidx/compose/animation/core/InfiniteTransition;->setShowDialog(Z)V
Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;
HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;-><init>(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;)V
PLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;-><init>(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;)V
Expand Down Expand Up @@ -1691,7 +1691,7 @@ HSPLandroidx/compose/animation/core/Transition;->getStartTimeNanos$animation_cor
HSPLandroidx/compose/animation/core/Transition;->getTargetState()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/Transition;->getUpdateChildrenNeeded()Z
HSPLandroidx/compose/animation/core/Transition;->get_playTimeNanos()J
HSPLandroidx/compose/animation/core/Transition;->isRunning()Z
HSPLandroidx/compose/animation/core/Transition;->getShowDialog()Z
HSPLandroidx/compose/animation/core/Transition;->isSeeking()Z
HSPLandroidx/compose/animation/core/Transition;->onChildAnimationUpdated()V
PLandroidx/compose/animation/core/Transition;->onDisposed$animation_core_release()V
Expand Down Expand Up @@ -1812,8 +1812,8 @@ Landroidx/compose/animation/core/TransitionState;
HSPLandroidx/compose/animation/core/TransitionState;-><clinit>()V
HSPLandroidx/compose/animation/core/TransitionState;-><init>()V
HSPLandroidx/compose/animation/core/TransitionState;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/animation/core/TransitionState;->isRunning$animation_core_release()Z
HSPLandroidx/compose/animation/core/TransitionState;->setRunning$animation_core_release(Z)V
HSPLandroidx/compose/animation/core/TransitionState;->getShowDialog$animation_core_release()Z
HSPLandroidx/compose/animation/core/TransitionState;->setShowDialog$animation_core_release(Z)V
Landroidx/compose/animation/core/TweenSpec;
HSPLandroidx/compose/animation/core/TweenSpec;-><clinit>()V
HSPLandroidx/compose/animation/core/TweenSpec;-><init>(IILandroidx/compose/animation/core/Easing;)V
Expand Down
Loading
Loading