Skip to content

Commit b5541a8

Browse files
authored
Merge branch 'zhanghai:master' into master
2 parents f52c21c + 0c8cf9a commit b5541a8

File tree

260 files changed

+11045
-3378
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

260 files changed

+11045
-3378
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/.gradle/
22
/.idea/
3+
/.kotlin/
34
/build/
45
/captures/
56
/local.properties

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
An open source Material Design file manager, for Android 5.0+.
88

9-
[<img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" width="240">](https://play.google.com/store/apps/details?id=me.zhanghai.android.files) [<img alt="Get it on F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" width="240">](https://f-droid.org/packages/me.zhanghai.android.files) [<img alt="Get it on GitHub" src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" width="240">](https://github.com/zhanghai/MaterialFiles/releases/latest/download/app-release.apk)
9+
[<img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" width="240">](https://play.google.com/store/apps/details?id=me.zhanghai.android.files) [<img alt="Get it on F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" width="240">](https://f-droid.org/packages/me.zhanghai.android.files) [<img alt="Get it on GitHub" src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" width="240">](https://github.com/zhanghai/MaterialFiles/releases/latest/download/app-release-universal.apk)
1010

11-
[Help translation on Transifex](https://www.transifex.com/zhanghai/MaterialFiles/) ([Search Android & GNOME translations](https://translations.zhanghai.me/), [Search Microsoft translations](https://www.microsoft.com/en-us/language), [MIME type translations](https://gitlab.freedesktop.org/xdg/shared-mime-info/-/tree/master/po))
11+
[Help translation on Transifex](https://www.transifex.com/zhanghai/MaterialFiles/) ([Search Android & GNOME translations](https://translations.zhanghai.me/), [Microsoft language resources](https://learn.microsoft.com/en-us/globalization/reference/microsoft-language-resources), [MIME type translations](https://gitlab.freedesktop.org/xdg/shared-mime-info/-/tree/master/po))
1212

1313
## Preview
1414

@@ -22,7 +22,7 @@ An open source Material Design file manager, for Android 5.0+.
2222
- Breadcrumbs: Navigate in the filesystem with ease.
2323
- Root support: View and manage files with root access.
2424
- Archive support: View, extract and create common compressed files.
25-
- NAS support: View and manage files on FTP, SFTP and SMB servers.
25+
- NAS support: View and manage files on FTP, SFTP, SMB and WebDAV servers.
2626
- Themes: Customizable UI colors, plus night mode with optional true black.
2727
- Linux-aware: Like [Nautilus](https://wiki.gnome.org/action/show/Apps/Files), knows symbolic links, file permissions and SELinux context.
2828
- Robust: Uses Linux system calls under the hood, not yet another [`ls` parser](https://news.ycombinator.com/item?id=7994720).

README_zh-CN.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
一个开源的 Material Design 文件管理器,适用于 Android 5.0+。
66

7-
[<img alt="下载应用,请到 Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/zh-cn_badge_web_generic.png" width="240">](https://play.google.com/store/apps/details?id=me.zhanghai.android.files) [<img alt="下载应用,请到 F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on-zh-cn.png" width="240">](https://f-droid.org/packages/me.zhanghai.android.files) [<img alt="下载应用,请到 GitHub" src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" width="240">](https://github.com/zhanghai/MaterialFiles/releases/latest/download/app-release.apk)
7+
[<img alt="下载应用,请到 Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/zh-cn_badge_web_generic.png" width="240">](https://play.google.com/store/apps/details?id=me.zhanghai.android.files) [<img alt="下载应用,请到 F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on-zh-cn.png" width="240">](https://f-droid.org/packages/me.zhanghai.android.files) [<img alt="下载应用,请到 GitHub" src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" width="240">](https://github.com/zhanghai/MaterialFiles/releases/latest/download/app-release-universal.apk)
88

9-
[在 Transifex 上帮助翻译](https://www.transifex.com/zhanghai/MaterialFiles/)[搜索 Android 和 GNOME 的翻译](https://translations.zhanghai.me/)[搜索微软的翻译](https://www.microsoft.com/en-us/language)[MIME 类型翻译](https://gitlab.freedesktop.org/xdg/shared-mime-info/-/tree/master/po)
9+
[在 Transifex 上帮助翻译](https://www.transifex.com/zhanghai/MaterialFiles/)[搜索 Android 和 GNOME 的翻译](https://translations.zhanghai.me/)[微软语言资源](https://learn.microsoft.com/en-us/globalization/reference/microsoft-language-resources)[MIME 类型翻译](https://gitlab.freedesktop.org/xdg/shared-mime-info/-/tree/master/po)
1010

1111
## 预览
1212

@@ -20,7 +20,7 @@
2020
- 面包屑导航栏:点击导航栏所显示路径中的任一文件夹即可快速访问。
2121
- Root 支持:使用 root 权限查看和管理文件。
2222
- 压缩文件支持:查看、提取和创建常见的压缩文件。
23-
- NAS 支持:查看和管理 FTP、SFTP 和 SMB 服务器上的文件。
23+
- NAS 支持:查看和管理 FTP、SFTP、SMBWebDAV 服务器上的文件。
2424
- 主题:可定制的界面颜色,以及可选纯黑的夜间模式。
2525
- Linux 友好:类似 [Nautilus](https://wiki.gnome.org/action/show/Apps/Files),支持符号链接、文件权限和 SELinux 上下文。
2626
- 健壮性:使用 Linux 系统调用实现,而不是另一个 [`ls` 解析器](https://news.ycombinator.com/item?id=7994720)

app/build.gradle

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ buildscript {
1616
mavenCentral()
1717
}
1818
dependencies {
19-
classpath 'com.google.gms:google-services:4.4.1'
20-
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
19+
classpath 'com.google.gms:google-services:4.4.2'
20+
classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
2121
}
2222
}
2323
apply plugin: 'com.google.gms.google-services'
@@ -26,17 +26,17 @@ apply plugin: 'com.google.firebase.crashlytics'
2626

2727
android {
2828
namespace 'me.zhanghai.android.files'
29-
buildToolsVersion = '34.0.0'
30-
compileSdk 34
31-
ndkVersion '26.2.11394342'
29+
buildToolsVersion = '35.0.0'
30+
compileSdk 35
31+
ndkVersion '27.2.12479018'
3232
defaultConfig {
3333
applicationId 'me.zhanghai.android.files'
3434
minSdk 21
35-
// Not supporting notification runtime permission yet.
35+
// Not supporting foreground service timeout yet.
3636
//noinspection OldTargetApi
3737
targetSdk 34
38-
versionCode 34
39-
versionName '1.6.2'
38+
versionCode 39
39+
versionName '1.7.4'
4040
resValue 'string', 'app_version', versionName + ' (' + versionCode + ')'
4141
buildConfigField 'String', 'FILE_PROVIDIER_AUTHORITY', 'APPLICATION_ID + ".file_provider"'
4242
resValue 'string', 'app_provider_authority', applicationId + '.app_provider'
@@ -56,6 +56,7 @@ android {
5656
generateLocaleConfig true
5757
}
5858
compileOptions {
59+
coreLibraryDesugaringEnabled true
5960
sourceCompatibility JavaVersion.VERSION_1_8
6061
targetCompatibility JavaVersion.VERSION_1_8
6162
}
@@ -67,6 +68,11 @@ android {
6768
path 'CMakeLists.txt'
6869
}
6970
}
71+
lint {
72+
// For "Invalid package reference in library; not included in Android: javax.security.sasl.
73+
// Referenced from org.apache.mina.proxy.ProxyAuthException."
74+
warning 'InvalidPackage', 'MissingTranslation'
75+
}
7076
buildTypes {
7177
release {
7278
minifyEnabled true
@@ -91,10 +97,10 @@ android {
9197
]
9298
}
9399
}
94-
lint {
95-
// For "Invalid package reference in library; not included in Android: javax.security.sasl.
96-
// Referenced from org.apache.mina.proxy.ProxyAuthException."
97-
warning 'InvalidPackage', 'MissingTranslation'
100+
bundle {
101+
language {
102+
enableSplit = false
103+
}
98104
}
99105
}
100106

@@ -104,28 +110,31 @@ repositories {
104110
}
105111
}
106112
dependencies {
113+
implementation('com.github.bitfireAT:dav4jvm:c1bc143') {
114+
exclude group: 'org.ogce', module: 'xpp3'
115+
}
107116
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
108-
releaseImplementation 'com.github.mypplication:stetho-noop:1.1'
109117
implementation 'com.github.topjohnwu.libsu:service:5.2.2'
110118
}
111119

112120
dependencies {
113121
implementation fileTree(dir: 'libs', include: ['*.jar'])
114122

123+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.2")
124+
115125
// kotlinx-coroutines-android depends on kotlin-stdlib-jdk8
116126
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
117-
def kotlinx_coroutines_version = '1.8.0'
127+
def kotlinx_coroutines_version = '1.9.0'
118128
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version"
119129
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version"
120130

121-
implementation 'androidx.activity:activity-ktx:1.8.2'
122-
// Appcompat 1.7.0-alpha01 is required for properly changing locale below API 24 (b/243119645).
123-
implementation 'androidx.appcompat:appcompat:1.7.0-alpha03'
124-
implementation 'androidx.core:core-ktx:1.12.0'
131+
implementation 'androidx.activity:activity-ktx:1.9.3'
132+
implementation 'androidx.appcompat:appcompat:1.7.0'
133+
implementation 'androidx.core:core-ktx:1.15.0'
125134
implementation 'androidx.drawerlayout:drawerlayout:1.2.0'
126135
implementation 'androidx.exifinterface:exifinterface:1.3.7'
127-
implementation 'androidx.fragment:fragment-ktx:1.6.2'
128-
def androidx_lifecycle_version = '2.7.0'
136+
implementation 'androidx.fragment:fragment-ktx:1.8.5'
137+
def androidx_lifecycle_version = '2.8.7'
129138
implementation "androidx.lifecycle:lifecycle-common-java8:$androidx_lifecycle_version"
130139
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$androidx_lifecycle_version"
131140
implementation "androidx.lifecycle:lifecycle-process:$androidx_lifecycle_version"
@@ -134,40 +143,38 @@ dependencies {
134143
implementation 'androidx.preference:preference-ktx:1.2.1'
135144
implementation 'androidx.recyclerview:recyclerview:1.3.2'
136145
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
137-
implementation 'com.google.android.material:material:1.11.0'
146+
implementation 'com.google.android.material:material:1.12.0'
138147

139148
implementation 'com.caverock:androidsvg-aar:1.4'
140149
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
141150
implementation 'com.drakeet.drawer:drawer:1.0.3'
142-
debugImplementation 'com.facebook.stetho:stetho:1.6.0'
143-
// If added along with okhttp3, remove the related dontwarn from proguard-rules.pro.
144-
//debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
145151
implementation 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:1.0.0'
146152
implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:1.0.0'
147-
implementation ('com.hierynomus:smbj:0.13.0') {
148-
exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on'
149-
}
150-
// SSHJ 0.36.0 requires Java 8.
153+
// SMBJ 0.12.0 breaks anonymous authentication: https://github.com/hierynomus/smbj/issues/792
151154
//noinspection GradleDependency
152-
implementation ('com.hierynomus:sshj:0.35.0') {
155+
implementation ('com.hierynomus:smbj:0.11.5') {
156+
// org.bouncycastle:bcprov-jdk15on uses bytecode version unsupported by Jetifier, so use
157+
// org.bouncycastle:bcprov-jdk15to18 instead.
153158
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
154159
}
155-
implementation 'com.jakewharton.threetenabp:threetenabp:1.4.6'
160+
def bouncy_castle_version = '1.78.1'
161+
implementation "org.bouncycastle:bcprov-jdk15to18:$bouncy_castle_version"
162+
implementation ('com.hierynomus:sshj:0.39.0') {
163+
exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on'
164+
exclude group: 'org.bouncycastle', module: 'bcpkix-jdk18on'
165+
}
166+
implementation "org.bouncycastle:bcpkix-jdk15to18:$bouncy_castle_version"
156167
implementation 'com.leinardi.android:speed-dial:3.3.0'
157168
implementation ('com.rapid7.client:dcerpc:0.12.1') {
158169
// SMBJ-RPC depends on the JRE flavor of Guava which targets Java 8.
159170
exclude group: 'com.google.guava', module: 'guava'
160171
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
161-
// This comes from the dependency on SMBJ.
162-
exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on'
163172
}
164-
implementation 'com.google.guava:guava:33.0.0-android'
173+
implementation 'com.google.guava:guava:33.3.1-android'
165174
// Guava conflicts with com.google.guava:listenablefuture:1.0 pulled in by AndroidX Core
166175
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
167176
implementation 'com.takisoft.preferencex:preferencex:1.1.0'
168-
// Commons Net 3.9.0 started using java.time.Duration in FTPClient.
169-
//noinspection GradleDependency
170-
implementation 'commons-net:commons-net:3.8.0'
177+
implementation 'commons-net:commons-net:3.11.1'
171178
// LicensesDialog 2.2.0 pulls in androidx.webkit and uses setForceDark() instead of correctly
172179
// setting colors.
173180
//noinspection GradleDependency
@@ -179,20 +186,18 @@ dependencies {
179186
implementation ('eu.agno3.jcifs:jcifs-ng:2.1.10') {
180187
exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on'
181188
}
182-
implementation 'org.bouncycastle:bcprov-jdk15to18:1.77'
183-
implementation platform('io.coil-kt:coil-bom:2.6.0')
189+
implementation platform('io.coil-kt:coil-bom:2.7.0')
184190
implementation 'io.coil-kt:coil'
185191
implementation 'io.coil-kt:coil-gif'
186192
implementation 'io.coil-kt:coil-svg'
187193
implementation 'io.coil-kt:coil-video'
188194
implementation 'me.zhanghai.android.appiconloader:appiconloader:1.5.0'
189195
implementation 'me.zhanghai.android.fastscroll:library:1.3.0'
190196
implementation 'me.zhanghai.android.foregroundcompat:library:1.0.2'
191-
implementation 'me.zhanghai.android.libarchive:library:1.0.3'
197+
implementation 'me.zhanghai.android.libarchive:library:1.1.4'
192198
implementation 'me.zhanghai.android.libselinux:library:2.1.0'
193-
implementation 'me.zhanghai.android.retrofile:library:1.1.1'
199+
implementation 'me.zhanghai.android.retrofile:library:1.2.0'
194200
implementation 'me.zhanghai.android.systemuihelper:library:1.0.0'
195-
implementation 'net.sourceforge.streamsupport:android-retrostreams:1.7.4'
196201
implementation 'org.apache.ftpserver:ftpserver-core:1.2.0'
197202
// This is a dependency of org.apache.ftpserver:ftpserver-core but org.apache.mina:mina-core
198203
// 2.1.3+ became incompatible before API 24 due to dependency on StandardSocketOptions
@@ -206,7 +211,7 @@ dependencies {
206211
implementation 'org.slf4j:slf4j-android:1.7.36'
207212

208213
//#ifdef NONFREE
209-
implementation platform('com.google.firebase:firebase-bom:32.7.1')
214+
implementation platform('com.google.firebase:firebase-bom:33.5.1')
210215
implementation 'com.google.firebase:firebase-analytics'
211216
implementation 'com.google.firebase:firebase-crashlytics-ndk'
212217
//#endif

app/proguard-rules.pro

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,10 @@
3333
-keepnames class * extends java.lang.Exception
3434
# For Class.getEnumConstants()
3535
-keepclassmembers enum * {
36-
public static **[] values();
36+
public static **[] values();
3737
}
3838
-keepnames class me.zhanghai.android.files.** implements android.os.Parcelable
3939

40-
# Apache Commons Compress
41-
-dontwarn org.apache.commons.compress.compressors.**
42-
-dontwarn org.apache.commons.compress.archivers.**
43-
# me.zhanghai.android.files.provider.archive.archiver.ArchiveWriter.sTarArchiveEntryLinkFlagsField
44-
-keepclassmembers class org.apache.commons.compress.archivers.tar.TarArchiveEntry {
45-
byte linkFlag;
46-
}
47-
4840
# Apache FtpServer
4941
-keepclassmembers class * implements org.apache.mina.core.service.IoProcessor {
5042
public <init>(java.util.concurrent.ExecutorService);
@@ -63,7 +55,3 @@
6355

6456
# SMBJ-RPC
6557
-dontwarn java.rmi.UnmarshalException
66-
67-
# Stetho No-op
68-
# This library includes the no-op for stetho-okhttp3 which requires okhttp3, but we never used it.
69-
-dontwarn com.facebook.stetho.okhttp3.StethoInterceptor

0 commit comments

Comments
 (0)