diff --git a/app/build.gradle b/app/build.gradle index 2e26f989e4b7b54fe36334f8235c25631af37dc4..e14f1bc2c2e87a74c35fba643e7f89cc2f36314d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,12 +7,12 @@ static def releaseTime() { } android { - compileSdkVersion 27 + compileSdkVersion 30 defaultConfig { applicationId "com.duolebo.bylrobot" minSdkVersion 15 - targetSdkVersion 22 - versionCode 28 + targetSdkVersion 26 + versionCode 30 versionName "1.6.8" } @@ -47,7 +47,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation(name: 'appbase-release', ext: 'aar') implementation 'com.android.volley:volley:1.1.1' - implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'org.nanohttpd:nanohttpd:2.2.0' implementation(name: 'vpnadaptercore-release', ext: 'aar') implementation project(':uploadservice') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0f567c5f7010986bff3ac5498fdf38c89073ccfc..241cdaebf9908262572924027965eb967523a57f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,7 +26,7 @@ - + diff --git a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt index 941cb675c0af8b0810bfabf117da1c3474fe5b97..ed2e5070fba34f51d9d55c7210863ef0b3c61efc 100644 --- a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt @@ -3,13 +3,12 @@ package com.duolebo.blyrobot import android.content.Intent import android.graphics.drawable.Drawable import android.os.Bundle -import android.support.v4.content.LocalBroadcastManager -import android.support.v7.app.AppCompatActivity import android.util.Log import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import com.duolebo.appbase.AppBaseHandler import com.duolebo.appbase.IAppBaseCallback import com.duolebo.appbase.IProtocol diff --git a/app/src/main/java/com/duolebo/blyrobot/activity/CaptureActivity.kt b/app/src/main/java/com/duolebo/blyrobot/activity/CaptureActivity.kt index d5f4c6a1765689b98d122c039b8aa31dfa31fa9a..1e32a68a2abcaf15374c7c13bd8f95a6cb0d4b12 100644 --- a/app/src/main/java/com/duolebo/blyrobot/activity/CaptureActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/activity/CaptureActivity.kt @@ -1,13 +1,13 @@ -package com.duolebo.blyrobot +package com.duolebo.blyrobot.activity import android.app.Activity import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.v7.app.AppCompatActivity import android.util.Log import android.widget.* -import com.duolebo.blyrobot.activity.PackageListActivity +import androidx.appcompat.app.AppCompatActivity +import com.duolebo.blyrobot.R import com.duolebo.blyrobot.data.ApkPackageInfo import com.duolebo.blyrobot.service.BylRobotService import com.duolebo.blyrobot.service.BylWebService diff --git a/app/src/main/java/com/duolebo/blyrobot/activity/CaptureDetailActivity.kt b/app/src/main/java/com/duolebo/blyrobot/activity/CaptureDetailActivity.kt index 513eed842807115626309afe343be42d28f9bad4..c225d1725a54af21aa9f1586e029a9910690bd32 100644 --- a/app/src/main/java/com/duolebo/blyrobot/activity/CaptureDetailActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/activity/CaptureDetailActivity.kt @@ -2,7 +2,7 @@ package com.duolebo.blyrobot.activity import android.os.Bundle import android.os.PersistableBundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity class CaptureDetailActivity: AppCompatActivity() { diff --git a/app/src/main/java/com/duolebo/blyrobot/activity/PackageListActivity.kt b/app/src/main/java/com/duolebo/blyrobot/activity/PackageListActivity.kt index 97e8008bc3a06fdb1b9ed42bbec5acec267702c7..ed1bdb17270c9cb69c51f7d378101e088cc95b0f 100644 --- a/app/src/main/java/com/duolebo/blyrobot/activity/PackageListActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/activity/PackageListActivity.kt @@ -4,10 +4,10 @@ import android.content.Intent import android.content.pm.PackageManager import android.graphics.drawable.Drawable import android.os.Bundle -import android.support.v7.app.AppCompatActivity import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.appcompat.app.AppCompatActivity import com.duolebo.blyrobot.R import com.minhui.vpn.utils.ThreadProxy diff --git a/app/src/main/java/com/duolebo/blyrobot/data/ApkPackageInfo.kt b/app/src/main/java/com/duolebo/blyrobot/data/ApkPackageInfo.kt index 3e4d9f50dff9c78eb58722e0487586fe245c5480..43228b09afca63ae28f596d798f8a66569065bb1 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/ApkPackageInfo.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/ApkPackageInfo.kt @@ -29,8 +29,8 @@ class ApkPackageInfo : Parcelable { protected constructor(ins: Parcel) { this.appName = ins.readString() - this.packageName = ins.readString() - this.applicationInfo = ins.readParcelable(ApplicationInfo::class.java.classLoader) + this.packageName = ins.readString().toString() + this.applicationInfo = ins.readParcelable(ApplicationInfo::class.java.classLoader)!! } companion object { diff --git a/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt b/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt index ab29b19daa4f96fb0ca37a1bf5a49f3cb28e382a..17dc1c202b3cf98ca0023de4a8a4f22d2a9b7b66 100644 --- a/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt +++ b/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt @@ -7,7 +7,6 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.IBinder -import android.support.v4.content.LocalBroadcastManager import android.util.Log import com.duolebo.appbase.AppBaseHandler import com.duolebo.appbase.IAppBaseCallback diff --git a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt index cbb6c3871b23ed59307e3f494ac998a4f55ba5d0..af619f30aa96968b21e3aa403da6d0c31054f374 100644 --- a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt +++ b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt @@ -12,6 +12,7 @@ object AdbUtil { const val TAG = "TaskAdbUtil" const val SHELL = "sh" const val ROOT_SHELL = "su" + const val ID_U = "id -u" const val LINE_BREAK = "\n" const val EXIT = "exit" @@ -22,8 +23,8 @@ object AdbUtil { var proc = getShellProc(ROOT_SHELL) ?: return false Log.i(TAG, "get root proc success!") val commands = ArrayList() - commands.add("id -u") - val result = this.sendCommands(commands, proc) + commands.add(ID_U) + var result = this.sendCommands(commands, proc) Log.i(TAG, "check permission error ${result.errorLines} and message ${result.successLines}") if (isRoot(result)) { return true @@ -31,8 +32,8 @@ object AdbUtil { else { proc = getShellProc(SHELL) ?: return false commands.clear() - commands.add("id -u") - val result = this.sendCommands(commands, proc) + commands.add(ID_U) + result = this.sendCommands(commands, proc) if (isRoot(result)) return true } @@ -84,6 +85,70 @@ object AdbUtil { return proc } + fun exeSingleCmdEcho(command: String): CmdResult { + Log.i(TAG, "exe single cmd echo: $command") + + val result = CmdResult(-1, "", "") + var status = -1 + var successBufReader: BufferedReader? = null + var errorBufReader: BufferedReader? = null + + var dos: DataOutputStream? = null + try { + + val proc = Runtime.getRuntime().exec(command) + + successBufReader = BufferedReader(InputStreamReader(proc.inputStream)) + errorBufReader = BufferedReader(InputStreamReader(proc.errorStream)) + var lineStr: String? = null + do { + lineStr = successBufReader.readLine() + if (lineStr.isNullOrEmpty()) + break + lineStr = trimLine(lineStr) + Log.i(TAG, " success line echo : $lineStr") + } while (true) + + do { + lineStr = errorBufReader.readLine() + if (lineStr.isNullOrEmpty()) + break + lineStr = trimLine(lineStr) + Log.i(TAG, " error line echo : $lineStr") + } while (true) + + status = proc.waitFor() + + } catch (e: IOException) { + e.printStackTrace() + } catch (e: Exception) { + e.printStackTrace() + } finally { + try { + dos?.close() + successBufReader?.close() + errorBufReader?.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + Log.i(TAG, "error message:${result.errorLines} and status $status") + if (result.errorLines.size > 0 && result.successLines.size <= 0) + status = -1 + + result.status = status + + for (line in result.successLines) { + Log.i(TAG, "echo success line: $line") + } + + for (line in result.errorLines) { + Log.i(TAG, "echo error line: $line") + } + + return result + } + fun exeCmdEcho(cmd: String, root: Boolean = false): CmdResult { val exeCommands = ArrayList() exeCommands.add(cmd) @@ -124,7 +189,7 @@ object AdbUtil { var dos: DataOutputStream? = null try { - dos = DataOutputStream(proc!!.outputStream) + dos = DataOutputStream(proc.outputStream) for (command in commands) { if (command.isEmpty()) { continue diff --git a/build.gradle b/build.gradle index 11093b2d18cd4c3152cc4b333e4c64e91e6c5e3e..052b8c227a2cfd1168acafc21b1200247263351d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,20 +1,21 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.70' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } + } allprojects { @@ -26,17 +27,6 @@ allprojects { dirs '../../aars' } } - - subprojects { - project.configurations.all { - resolutionStrategy.eachDependency { details -> - if (details.requested.group == 'com.android.support' - && !details.requested.name.contains('multidex') ) { - details.useVersion "27.1.1" - } - } - } - } } task clean(type: Delete) { diff --git a/gradle.properties b/gradle.properties index c73d2393ba8872e777f00d473d25d9049e53dcde..e6af540f48163b1ee3f83c652cdd60cf5be71ce6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,3 +17,4 @@ org.gradle.jvmargs=-Xmx1536m android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true +android.injected.testOnly=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09bc3aea2c131c8ecba90f6d9e8e8e9199afca22..4ccc15899e7c89d546b00faa5df3ed77b2bb58df 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ -#Tue Sep 25 09:27:36 CST 2018 +#Wed Jul 08 10:14:08 CST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip android.enableBuildCache=false diff --git a/uploadservice/build.gradle b/uploadservice/build.gradle index 6ba254345806182d33982b51d7fb39123cd4d810..e6e9b046f46f5fe92a6891959a2100c1307ad668 100644 --- a/uploadservice/build.gradle +++ b/uploadservice/build.gradle @@ -35,8 +35,8 @@ android { def supportLibraryVersion = "27.1.1" dependencies { - implementation "com.android.support:appcompat-v7:${supportLibraryVersion}" - implementation "com.android.support:support-v4:${supportLibraryVersion}" + implementation 'androidx.appcompat:appcompat:1.0.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' } // add the following information to the file: local.properties situated in the parent directory of diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java index cf0d99effadac58b143de1aced5938302b5253e4..5b0e990764b24bc75f3a98c070e49143bdddd86b 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationAction.java @@ -3,7 +3,7 @@ package net.gotev.uploadservice; import android.app.PendingIntent; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import android.text.TextUtils; /** diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java index c6e4b68bdfddaf266b5f59f403c4c8d1505060e0..b63e96e5801337adb8f5e152b1efe3ce6c781e9d 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationConfig.java @@ -4,7 +4,7 @@ import android.app.PendingIntent; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Contains the configuration of the upload notification. diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java index d81d2bed50e48966c92584823b30f1ef21105b6e..244a68d225c9e63101fea928222821f468551c1f 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadNotificationStatusConfig.java @@ -6,7 +6,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import java.util.ArrayList; diff --git a/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java b/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java index 500655966a85bcf704bf4e6b759e79f9c7043b34..1da9a49cbdd8c7ac10165c6e4a276724a6fba793 100644 --- a/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java +++ b/uploadservice/src/main/java/net/gotev/uploadservice/UploadTask.java @@ -9,7 +9,7 @@ import android.media.RingtoneManager; import android.net.Uri; import android.os.Build; import android.os.Handler; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import java.io.File; import java.io.IOException;