diff --git a/app/build.gradle b/app/build.gradle
index 6aeabc8d..d344fcdb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -96,7 +96,7 @@ android {
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
- include "armeabi-v7a", "arm64-v8a"
+ include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
// include "x86", "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
@@ -141,7 +141,7 @@ dependencies {
})
kapt 'com.jakewharton:butterknife-compiler:10.2.3'
// Android supports
- implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.multidex:multidex:2.0.1'
@@ -201,10 +201,10 @@ dependencies {
exclude group: 'com.android.support'
})
// WorkManager
- implementation 'androidx.work:work-runtime:2.5.0'
+ implementation 'androidx.work:work-runtime:2.7.1'
// Android job
implementation 'com.evernote:android-job:1.4.2'
- debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'
// Optional, if you use support library fragments:
debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.3'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ae02bd74..239957a7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,13 +4,15 @@
package="org.autojs.autojs">
-
+
-
+
@@ -19,6 +21,7 @@
+
@@ -26,7 +29,6 @@
+ tools:replace="android:label, android:icon, android:allowBackup"
+ tools:targetApi="m">
+ android:theme="@style/AppTheme.Splash"
+ android:exported="true">
@@ -57,12 +61,14 @@
android:hardwareAccelerated="true"
android:label="@string/app_name"
android:launchMode="singleTask"
- android:theme="@style/AppTheme.FullScreen">
+ android:theme="@style/AppTheme.FullScreen"
+ android:exported="true">
+ android:theme="@android:style/Theme.NoDisplay"
+ android:exported="true">
@@ -86,37 +92,39 @@
android:launchMode="standard"
android:multiprocess="true"
android:taskAffinity="org.autojs.autojs.edit"
+ android:exported="false"
android:theme="@style/EditorTheme">
-
+
-
+
-
+
-
+
-
-
-
-
-
+ android:configChanges="orientation|screenSize" android:exported="false"/>
+
+
+
+
+
-
+ android:theme="@style/AppTheme.Transparent" android:exported="false"/>
+
@@ -127,20 +135,21 @@
-
-
+
+
-
+
+ android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
+ android:exported="true">
@@ -153,7 +162,8 @@
android:name="org.autojs.autojs.external.tile.LayoutHierarchyTile"
android:icon="@drawable/ic_circular_menu_hierarchy"
android:label="@string/text_inspect_layout_hierarchy"
- android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
+ android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
+ android:exported="true">
-
+
@@ -199,7 +210,8 @@
-
+
@@ -227,7 +239,8 @@
+ android:label="@string/text_edit_script"
+ android:exported="true">
@@ -246,7 +259,8 @@
android:icon="@drawable/autojs_material"
android:label="@string/text_run_script"
android:taskAffinity="org.autojs.autojs.external.open.RunIntentActivity"
- android:theme="@android:style/Theme.NoDisplay">
+ android:theme="@android:style/Theme.NoDisplay"
+ android:exported="true">
@@ -264,7 +278,8 @@
android:name="org.autojs.autojs.external.open.ImportIntentActivity"
android:icon="@drawable/autojs_material"
android:label="@string/text_import_script"
- android:theme="@style/AppTheme.Transparent">
+ android:theme="@style/AppTheme.Transparent"
+ android:exported="true">
@@ -282,13 +297,15 @@
+ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
+ android:exported="false">
-
+
@@ -298,13 +315,15 @@
android:resource="@xml/script_widget_config"/>
-
+
-
+
diff --git a/app/src/main/java/org/autojs/autojs/App.kt b/app/src/main/java/org/autojs/autojs/App.kt
index 1486503b..aad28460 100644
--- a/app/src/main/java/org/autojs/autojs/App.kt
+++ b/app/src/main/java/org/autojs/autojs/App.kt
@@ -13,7 +13,6 @@ import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition
import com.flurry.android.FlurryAgent
-import com.squareup.leakcanary.LeakCanary
import com.stardust.app.GlobalAppContext
import com.stardust.autojs.core.ui.inflater.ImageLoader
import com.stardust.autojs.core.ui.inflater.util.Drawables
@@ -67,12 +66,6 @@ class App : MultiDexApplication() {
crashHandler.setBuglyHandler(Thread.getDefaultUncaughtExceptionHandler())
Thread.setDefaultUncaughtExceptionHandler(crashHandler)
- if (LeakCanary.isInAnalyzerProcess(this)) {
- // This process is dedicated to LeakCanary for heap analysis.
- // You should not init your app in this process.
- return
- }
- //LeakCanary.install(this);
}
diff --git a/autojs/src/main/AndroidManifest.xml b/autojs/src/main/AndroidManifest.xml
index b5ec60b4..39906041 100644
--- a/autojs/src/main/AndroidManifest.xml
+++ b/autojs/src/main/AndroidManifest.xml
@@ -3,37 +3,44 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.stardust.autojs">
+
+
+
-
-
+
+
+ android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
+ android:exported="false">
diff --git a/autojs/src/main/java/com/stardust/autojs/core/accessibility/SimpleActionAutomator.kt b/autojs/src/main/java/com/stardust/autojs/core/accessibility/SimpleActionAutomator.kt
index b8d643d2..59604685 100644
--- a/autojs/src/main/java/com/stardust/autojs/core/accessibility/SimpleActionAutomator.kt
+++ b/autojs/src/main/java/com/stardust/autojs/core/accessibility/SimpleActionAutomator.kt
@@ -206,7 +206,7 @@ class SimpleActionAutomator(
ScriptRuntime.requiresApi(24)
if (!::mGlobalActionAutomator.isInitialized) {
mGlobalActionAutomator =
- GlobalActionAutomator(Handler(mScriptRuntime.get()?.loopers?.servantLooper)) {
+ GlobalActionAutomator(mScriptRuntime.get()?.loopers?.servantLooper?.let { Handler(it) }) {
ensureAccessibilityServiceEnabled()
return@GlobalActionAutomator mAccessibilityBridge.service!!
}
diff --git a/autojs/src/main/java/com/stardust/autojs/core/graphics/ScriptCanvasView.kt b/autojs/src/main/java/com/stardust/autojs/core/graphics/ScriptCanvasView.kt
index 21e6d65c..cbc2a179 100644
--- a/autojs/src/main/java/com/stardust/autojs/core/graphics/ScriptCanvasView.kt
+++ b/autojs/src/main/java/com/stardust/autojs/core/graphics/ScriptCanvasView.kt
@@ -63,7 +63,9 @@ class ScriptCanvasView(context: Context, scriptRuntime: ScriptRuntime) : Texture
canvas = lockCanvas()
scriptCanvas.setCanvas(canvas)
emit("draw", scriptCanvas, this@ScriptCanvasView)
- unlockCanvasAndPost(canvas)
+ if (canvas != null) {
+ unlockCanvasAndPost(canvas)
+ }
canvas = null
val dt = mTimePerDraw - (SystemClock.uptimeMillis() - time)
if (dt > 0) {
diff --git a/automator/src/main/java/com/stardust/automator/GlobalActionAutomator.kt b/automator/src/main/java/com/stardust/automator/GlobalActionAutomator.kt
index 0d6fa416..9ef2e91f 100644
--- a/automator/src/main/java/com/stardust/automator/GlobalActionAutomator.kt
+++ b/automator/src/main/java/com/stardust/automator/GlobalActionAutomator.kt
@@ -117,7 +117,7 @@ class GlobalActionAutomator(private val mHandler: Handler?, private val serviceP
private fun gesturesWithoutHandler(description: GestureDescription): Boolean {
prepareLooperIfNeeded()
val result = VolatileBox(false)
- val handler = Handler(Looper.myLooper())
+ val handler = Looper.myLooper()?.let { Handler(it) }
service.dispatchGesture(description, object : AccessibilityService.GestureResultCallback() {
override fun onCompleted(gestureDescription: GestureDescription) {
result.set(true)
diff --git a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoAllocator.kt b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoAllocator.kt
index fa3ede4f..7fac406e 100644
--- a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoAllocator.kt
+++ b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoAllocator.kt
@@ -84,7 +84,7 @@ open class AccessibilityNodeInfoAllocator {
key.recycle()
notRecycledCount++
if (DEBUG)
- Log.w(TAG, value)
+ value?.let { Log.w(TAG, it) }
} catch (ignored: IllegalStateException) {
}
diff --git a/inrt/src/main/AndroidManifest.xml b/inrt/src/main/AndroidManifest.xml
index be85b30c..22d5e96c 100644
--- a/inrt/src/main/AndroidManifest.xml
+++ b/inrt/src/main/AndroidManifest.xml
@@ -15,7 +15,8 @@
-
+
+
@@ -30,13 +31,14 @@
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:label, android:allowBackup"
tools:targetApi="m">
-
+
+ android:theme="@style/AppTheme.Splash"
+ android:exported="true">
@@ -44,12 +46,13 @@
-
+
+ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
+ android:exported="false">
diff --git a/project-versions.json b/project-versions.json
index 4b0b00e7..744019f9 100644
--- a/project-versions.json
+++ b/project-versions.json
@@ -1,8 +1,8 @@
{
- "appVersionCode": 470,
- "appVersionName": "4.1.22.0108 Modify",
- "target": 28,
+ "appVersionCode": 471,
+ "appVersionName": "4.1.22.0115.alpha Modify",
+ "target": 31,
"mini": 21,
- "compile": 28,
+ "compile": 31,
"buildTool": "30.0.3"
}