From 077dd5494b4bda3395c9bafa7882104b8a2d79b0 Mon Sep 17 00:00:00 2001 From: PangBaiWork <15183252672@163.com> Date: Sun, 10 Mar 2024 13:56:49 +0800 Subject: [PATCH] support android8 fixed bugs --- README-CN.md | 4 ++++ README.md | 4 ++++ app/build.gradle | 5 ++--- app/src/main/assets/libexec.so | Bin 12656 -> 13000 bytes .../terminal/view/SuperTerminalView.java | 8 ++++++-- .../com/pangbai/weblog/execute/cmdExer.java | 7 +++++-- .../java/com/pangbai/weblog/tool/Init.java | 5 +++++ .../pangbai/weblog/view/FilesListAdapter.java | 3 +-- app/src/main/jni/Application.mk | 2 +- 9 files changed, 28 insertions(+), 10 deletions(-) diff --git a/README-CN.md b/README-CN.md index 179b949..5ce1d29 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,4 +1,8 @@ Read this in other languages: [English](README.md) , [简体中文](README-CN.md), + +[![CI](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/PangBaiWork/WeBlog/actions/workflows/main.yml) +[![QQ](https://img.shields.io/badge/Join-QQ_Group-ff69b4)](https://qm.qq.com/q/1wJcBUfst2) +---- ## 引言 博客是什么?它是我们的另一片天地,在这里你可以说你想说的话,分享自己学到的新东西,美好的事,是温馨的小窝。 它是不被世俗打扰的净土,没有人在这里教你做事,你可以倾心陈述一切。 diff --git a/README.md b/README.md index 3627e11..69ccbce 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ Read this in other languages: [English](README.md) , [简体中文](README-CN.md) + +[![CI](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/PangBaiWork/WeBlog/actions/workflows/main.yml) +[![QQ](https://img.shields.io/badge/Join-QQ_Group-ff69b4)](https://qm.qq.com/q/1wJcBUfst2) +---- ## Introduction What is a blog? It is another world for us,also a warm nest where you can say what you want to say, share new and beautiful things you have learned. diff --git a/app/build.gradle b/app/build.gradle index b44f431..7c7bee0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,9 +13,7 @@ android { // buildToolsVersion "33.0.0" lintOptions { - abortOnError false - } packagingOptions { jniLibs { @@ -31,7 +29,8 @@ android { versionCode 2 versionName "1.1" ndk {//让gradle知道ndk的配置 - abiFilter "arm64-v8a"//so文件的平 + // abiFilter "arm64-v8a,"//so文件的平 + } vectorDrawables { useSupportLibrary true diff --git a/app/src/main/assets/libexec.so b/app/src/main/assets/libexec.so index 814c2cf503e5a0c2254e91b2b6953806c366a8be..3fdc80fe85e546700b9d2dd6a70ed8ea049aba9f 100644 GIT binary patch literal 13000 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 literal 12656 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
  • 21-Sx(C|r z@LJRxV4Lr0+OU4px;oDt_iS3*w0`p@PbpbiMn9qp9?u<(t2eImtlL!Q@tB2Iebu73 zbtJ-ZPe)|ziNw`anc}3Ul?xF{K%1G2c$zY^-{=TS-Jc~r`i57b2W+hmi}m*;Isn}x6}m+edc(fv2+uMu+c zye+9bZ<9Xl^O^eQ{WxRgLcf__iXut+mTcIB`501G_M=tgrI^+C$wK`q|952Q%lk%2 z56Xr_1=4<5-#(!)j_G6PCHX!0CHbI2C}fWRqZ#^R=X3F~OoQy0(3kgpf@Oap^u;tE zJAcXVyff|1Dzx0oc-)lm@R8}ZxyJltvGH_X)q;H@+V~Dth zJhvSe9j9-x7UPork?ZGOV6yLAQT*f=nwbw(5P8|Igx^DEGX3*H|CJ2mGWGu#QHcSa diff --git a/app/src/main/java/com/pangbai/terminal/view/SuperTerminalView.java b/app/src/main/java/com/pangbai/terminal/view/SuperTerminalView.java index 2e0d399..aeed6fe 100755 --- a/app/src/main/java/com/pangbai/terminal/view/SuperTerminalView.java +++ b/app/src/main/java/com/pangbai/terminal/view/SuperTerminalView.java @@ -85,8 +85,12 @@ public SuperTerminalView(Context context, AttributeSet attributes) { } public void setTerminal(String cwd) { - String[] n = {Init.linker,Init.busyboxPath,"sh"}; - setProcess(Init.linker, cwd, n,Init.envp, 0); + if (Init.android10) { + String[] n = {Init.linker, Init.busyboxPath, "sh"}; + setProcess(Init.linker, cwd, n, Init.envp, 0); + }else { + setProcess(Init.busyboxPath, cwd,new String[] {"sh"}, Init.envp, 0); + } // setProcess(Init.shell, cwd, null,new String[]{ "PATH=" + Init.binDir}, 0); runProcess(); //cmdView.requestFocus(); diff --git a/app/src/main/java/com/pangbai/weblog/execute/cmdExer.java b/app/src/main/java/com/pangbai/weblog/execute/cmdExer.java index 556398a..44e7f75 100755 --- a/app/src/main/java/com/pangbai/weblog/execute/cmdExer.java +++ b/app/src/main/java/com/pangbai/weblog/execute/cmdExer.java @@ -58,8 +58,11 @@ public static int execute(String command, boolean su, boolean wait) { // 设置环境变量 // environment.put("LD_LIBRARY_PATH", Init.filesDirPath + "/usr/lib"); - - processBuilder.command(Init.linker,Init.busyboxPath,shell, "-c",command); + if (Init.android10) { + processBuilder.command(Init.linker, Init.busyboxPath, shell, "-c", command); + }else { + processBuilder.command(Init.busyboxPath,shell, "-c", command); + } processBuilder.redirectErrorStream(true); try { diff --git a/app/src/main/java/com/pangbai/weblog/tool/Init.java b/app/src/main/java/com/pangbai/weblog/tool/Init.java index a124dce..cbda2f5 100755 --- a/app/src/main/java/com/pangbai/weblog/tool/Init.java +++ b/app/src/main/java/com/pangbai/weblog/tool/Init.java @@ -45,6 +45,7 @@ public class Init { final public static String sdcardPath = "/storage/emulated/0/"; final public static String linker = "/system/bin/linker64"; public static String keyPath; + final public static boolean android10=Build.VERSION.SDK_INT>=29; boolean result; AlertDialog dialog; @@ -75,6 +76,7 @@ public Init(Activity ct) { "PS1=\\[\\e[1\\;31m\\])➜ \\[\\e[1;36m\\]\\W\\[\\e[m\\] ", "TERM=xterm-256color", "LANG=en_US.UTF-8", + android10?"ANDROID10=1":"ANDROID10=0", "ANDROID_DATA=/data", "ANDROID_ROOT=/system" }; @@ -109,6 +111,9 @@ public void run() { checkPermission(ct); }); + else + checkPermission(ct); + }); diff --git a/app/src/main/java/com/pangbai/weblog/view/FilesListAdapter.java b/app/src/main/java/com/pangbai/weblog/view/FilesListAdapter.java index e015425..d609d58 100644 --- a/app/src/main/java/com/pangbai/weblog/view/FilesListAdapter.java +++ b/app/src/main/java/com/pangbai/weblog/view/FilesListAdapter.java @@ -186,8 +186,7 @@ public void refreshList(){ @SuppressLint("NotifyDataSetChanged") public void setList(File files) { if (!files.exists() || !files.canRead()) { - - Snackbar.make(parent, "Can Not Open This Folder", Snackbar.LENGTH_SHORT).show(); + if (parent!=null) Snackbar.make(parent, "Can Not Open This Folder", Snackbar.LENGTH_SHORT).show(); return; } diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk index 1fae4a5..36fef10 100755 --- a/app/src/main/jni/Application.mk +++ b/app/src/main/jni/Application.mk @@ -1,4 +1,4 @@ Dowork_TOOLCHAIN_VERSION := 4.9 APP_STL := c++_static -APP_ABI := arm64-v8a +APP_ABI := arm64-v8a,x86_64 APP_PLATFORM := android-24 \ No newline at end of file