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;