Skip to content

Commit

Permalink
init project
Browse files Browse the repository at this point in the history
  • Loading branch information
HpBoss committed May 4, 2023
0 parents commit 41dbb4d
Show file tree
Hide file tree
Showing 1,163 changed files with 87,146 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Android CI

on: [push]

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '11'
- name: Build with Gradle
run: ./gradlew assembleDebug lintVitalRelease
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: FileManager-debug.apk
path: app/build/outputs/apk/debug/FileManager-debug.apk
retention-days: 10
43 changes: 43 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/android/proguard-rules.pro
/local.properties
/.idea/
# Default ignored files
/shelf/
/workspace.xml
# Gradle files
/.gradle

build/
# release apk
release/

# Local configuration file (sdk path, etc)
local.properties

# Log/OS Files
*.log

# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json

# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml

# Keystore files
*.keystore

# Google Services (e.g. APIs or Firebase)
google-services.json

# Android Profiling
*.hprof
/android/project.properties
/android/ic_launcher-web.png
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# FileManager
[![Android CI 状态](https://github.com/HpBoss/FileManager/workflows/Android%20CI/badge.svg)](https://github.com/zhanghai/MaterialFiles/actions) [![GitHub 发行版](https://img.shields.io/github/v/release/HpBoss/FileManager)](https://github.com/zhanghai/MaterialFiles/releases) [![许可证](https://img.shields.io/github/license/HpBoss/FileManager?color=blue)](LICENSE)

File Manager for DuerOS

## 预览

<img src="art/left_drawer.png" alt="left_drawer" style="zoom:33%;" /><img src="art/main_page.png" alt="main_page" style="zoom:33%;" /><img src="art/list_layout.png" alt="list_layout" style="zoom:33%;" /><img src="art/more_operate.png" alt="more_operate" style="zoom:33%;" /><img src="art/recent.png" alt="recent" style="zoom:33%;" /><img src="art/search.png" alt="search" style="zoom:33%;" />


## 许可证

Copyright (C) 2023 HpBoss

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
5 changes: 5 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/.cxx/
/.externalNativeBuild/
/build/
/out/
/schemas/
9 changes: 9 additions & 0 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.6)

project(MaterialFiles C)

add_library(hiddenapi SHARED src/main/jni/hiddenapi.c)

find_library(LOG_LIBRARY log)
add_library(syscalls SHARED src/main/jni/syscalls.c)
target_link_libraries(syscalls ${LOG_LIBRARY})
184 changes: 184 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
kapt {
correctErrorTypes = true
}
apply plugin: 'kotlin-parcelize'

buildscript {
repositories {
google()
mavenCentral()
}
}

android {
namespace 'com.baidu.duer.files'
compileSdkVersion 33
ndkVersion '25.1.8937393'
buildToolsVersion '33.0.0'
sourceSets {
main.jniLibs.srcDirs = ['libs']
}
defaultConfig {
applicationId 'com.baidu.duer.filemanager'
minSdkVersion 26
// Not supporting notification runtime permission yet.
// noinspection OldTargetApi
targetSdkVersion 32
versionCode VERSION_CODE as int
versionName VERSION_NAME as String
resValue 'string', 'app_version', versionName + ' (' + versionCode + ')'
buildConfigField 'String', 'FILE_PROVIDIER_AUTHORITY', 'APPLICATION_ID + ".file_provider"'
buildConfigField 'String', 'URI_PROVIDIER_AUTHORITY', 'APPLICATION_ID + ".uri_provider"'
resValue 'string', 'app_provider_authority', applicationId + '.app_provider'
resValue 'string', 'file_provider_authority', applicationId + '.file_provider'
resValue 'string', 'uri_provider_authority', applicationId + '.uri_provider'

javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation":
"$projectDir/schemas".toString()]
}
}

// FileManager Apk主进程CrabKey
buildConfigField "String", "crab_key", "\"eafe1624018ec5a8\""
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.buildType.name == 'release' || variant.buildType.name == 'debug') {
def fileName = "FileManager_${variant.buildType.name}_${VERSION_NAME}.apk"
outputFileName = fileName
}
}
}
buildFeatures {
viewBinding true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
dataBinding {
enabled = true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// 因为APK会在Jenkins平台签v2签名(Sin_Apps_v2)因此工程中不配置签名
}
}
packagingOptions {
resources {
excludes += ['META-INF/DEPENDENCIES']
}
}
lint {
warning 'InvalidPackage', 'MissingTranslation'
}
}

repositories {
maven {
url 'https://jitpack.io'
}
}

dependencies {

implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation fileTree(dir: 'libs', include: ['*.jar'])

// kotlinx-coroutines-android depends on kotlin-stdlib-jdk8
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$KOTLINX_COROUTINES_VERSION"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$KOTLINX_COROUTINES_VERSION"

implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.exifinterface:exifinterface:1.3.5'
implementation 'androidx.fragment:fragment-ktx:1.5.5'

implementation "androidx.lifecycle:lifecycle-common-java8:$ANDROIDX_LIFECYCLE_VERSION"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$ANDROIDX_LIFECYCLE_VERSION"
implementation "androidx.lifecycle:lifecycle-process:$ANDROIDX_LIFECYCLE_VERSION"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$ANDROIDX_LIFECYCLE_VERSION"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$ANDROIDX_LIFECYCLE_VERSION"
implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'com.google.android.material:material:1.7.0'

implementation 'com.github.chrisbanes:PhotoView:2.3.0'
releaseImplementation 'com.github.mypplication:stetho-noop:1.1'
implementation 'com.github.topjohnwu.libsu:service:5.0.3'
implementation 'com.caverock:androidsvg-aar:1.4'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'
implementation 'com.drakeet.drawer:drawer:1.0.3'
debugImplementation 'com.facebook.stetho:stetho:1.6.0'
implementation 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:1.0.0'
implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:1.0.0'
implementation('com.hierynomus:smbj:0.11.5') {
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
}
implementation('com.hierynomus:sshj:0.32.0') {
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
}
implementation 'com.jakewharton.threetenabp:threetenabp:1.4.0'
implementation 'com.leinardi.android:speed-dial:3.1.1'
implementation('com.rapid7.client:dcerpc:0.12.0') {
exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
}
implementation 'org.bouncycastle:bcprov-jdk15to18:1.70'
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
implementation 'com.takisoft.preferencex:preferencex:1.1.0'
implementation 'commons-net:commons-net:3.8.0'

implementation 'de.psdev.licensesdialog:licensesdialog:2.1.0'

implementation 'dev.chrisbanes:insetter-ktx:0.3.1'
implementation 'dev.rikka.rikkax.preference:simplemenu-preference:1.0.3'
implementation 'dev.rikka.shizuku:api:12.0.0'
implementation 'eu.agno3.jcifs:jcifs-ng:2.1.6'
def coil_version = '2.2.2'
implementation "io.coil-kt:coil:$coil_version"
implementation "io.coil-kt:coil-gif:$coil_version"
implementation "io.coil-kt:coil-svg:$coil_version"
implementation "io.coil-kt:coil-video:$coil_version"
implementation 'me.zhanghai.android.appiconloader:appiconloader:1.5.0'
implementation 'me.zhanghai.android.fastscroll:library:1.1.8'
implementation 'me.zhanghai.android.foregroundcompat:library:1.0.2'
implementation 'me.zhanghai.android.libselinux:library:2.1.0'
implementation 'me.zhanghai.android.retrofile:library:1.1.1'
implementation 'me.zhanghai.android.systemuihelper:library:1.0.0'
implementation 'net.sourceforge.streamsupport:android-retrostreams:1.7.4'
implementation 'org.apache.commons:commons-compress:1.20'
// Optional dependency of Commons Compress for 7Z LZMA.
implementation 'org.tukaani:xz:1.9'
implementation 'org.apache.ftpserver:ftpserver-core:1.2.0'
implementation('org.apache.mina:mina-core') {
version {
strictly '2.1.3'
}
}
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
implementation 'com.github.junrar:junrar:7.4.1'

implementation("androidx.room:room-runtime:$ROOM_VERSION")
annotationProcessor("androidx.room:room-compiler:$ROOM_VERSION")
kapt("androidx.room:room-compiler:$ROOM_VERSION")
implementation "androidx.room:room-ktx:$ROOM_VERSION"
implementation 'io.github.scwang90:refresh-layout-kernel:2.0.5'
implementation 'io.github.scwang90:refresh-header-classics:2.0.5'
implementation 'com.github.penfeizhou.android.animation:awebp:2.24.0'
implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0'
}
67 changes: 67 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

# Native methods
# https://www.guardsquare.com/en/products/proguard/manual/examples#native
-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}

# App
-keep class com.baidu.duer.files.** implements androidx.appcompat.view.CollapsibleActionView { *; }
-keep class com.baidu.duer.files.provider.common.ByteString { *; }
-keep class com.baidu.duer.files.provider.linux.syscall.** { *; }
-keepnames class * extends java.lang.Exception
# For Class.getEnumConstants()
-keepclassmembers enum * {
public static **[] values();
}
-keepnames class com.baidu.duer.files.** implements android.os.Parcelable

# Apache Commons Compress
-dontwarn org.apache.commons.compress.compressors.**
-dontwarn org.apache.commons.compress.archivers.**
# com.baidu.duer.files.provider.archive.archiver.ArchiveWriter.sTarArchiveEntryLinkFlagsField
-keepclassmembers class org.apache.commons.compress.archivers.tar.TarArchiveEntry {
byte linkFlag;
}

# Apache FtpServer
-keepclassmembers class * implements org.apache.mina.core.service.IoProcessor {
public <init>(java.util.concurrent.ExecutorService);
public <init>(java.util.concurrent.Executor);
public <init>();
}

# Bouncy Castle
-keep class org.bouncycastle.jcajce.provider.** { *; }
-keep class org.bouncycastle.jce.provider.** { *; }

# Stetho No-op
# This library includes the no-op for stetho-okhttp3 which requires okhttp3, but we never used it.
-dontwarn com.facebook.stetho.okhttp3.StethoInterceptor

# LiveEventBus
-dontwarn com.jeremyliao.liveeventbus.**
-keep class com.jeremyliao.liveeventbus.** { *; }
-keep class androidx.lifecycle.** { *; }
-keep class androidx.arch.core.** { *; }
Loading

0 comments on commit 41dbb4d

Please sign in to comment.