diff --git a/README.md b/README.md index 9b747f02..b9589c1f 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ ### 简介 * Android 平台支持无障碍服务的 JavaScript 自动化工具 +* 需要 [Android 7.0](https://zh.wikipedia.org/wiki/Android_Nougat) (`API 24`) 及以上 * 复刻 (Fork) 自 [hyb1996/Auto.js](https://github.com/hyb1996/Auto.js) ****** @@ -53,7 +54,7 @@ * 支持将脚本文件或项目打包为 APK 文件 * 支持利用 Root 权限扩展功能 (屏幕点击/滑动/录制/Shell) * 支持作为 Tasker 插件使用 -* 支持与 VSCode 连接并进行桌面开发 (需要 [AutoJs6-VSCode-Ext](https://github.com/SuperMonster003/AutoJs6-VSCode-Ext) 插件) +* 支持与 VSCode 连接并进行桌面开发 (需要 [AutoJs6-VSCode-Extension](https://github.com/SuperMonster003/AutoJs6-VSCode-Extension) 插件) ****** @@ -61,7 +62,10 @@ ****** -* Rhino 引擎由 [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) 升级至 [v1.7.14 (SNAPSHOT)](https://github.com/mozilla/rhino/) +* VSCode 插件支持客户端 (LAN) 及服务端 (LAN/ADB) 连接方式 + + +* Rhino 引擎由 [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) 升级至 [v1.7.14](https://github.com/mozilla/rhino/) * 支持 [Object.values()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/values) @@ -99,6 +103,25 @@ [comment]: <> "Version history only shows last 3 versions" +# v6.0.2 + +###### 2022/02/05 + +* `新增` images.bilateralFilter() 双边滤波图像处理方法 +* `修复` 多次调用 toast 只生效最后一次调用的问题 +* `修复` toast.dismiss() 可能无效的问题 +* `修复` 客户端模式及服务端模式开关可能无法正常工作的问题 +* `修复` 客户端模式及服务端模式开关状态不能正常刷新的问题 +* `修复` Android 7 解析 UI 模式 text 元素异常 (Ref to TonyJiangWJ) _[`issue #4`](https://github.com/SuperMonster003/AutoJs6/issues/4)_ +* `优化` 忽略 sleep() 的 ScriptInterruptedException 异常 +* `优化` 附加 Androidx AppCompat (Legacy) 版本 1.0.2 +* `优化` 升级 Androidx AppCompat 版本 1.4.0 -> 1.4.1 +* `优化` 升级 Androidx Preference 版本 1.1.1 -> 1.2.0 +* `优化` 升级 Okhttp3 版本 3.10.0 -> 5.0.0-alpha.3 -> 5.0.0-alpha.4 +* `优化` 升级 Android Material 版本 1.6.0-alpha01 -> 1.6.0-alpha02 +* `优化` 升级 Android Gradle 插件版本 7.2.0-alpha06 -> 7.2.0-beta01 +* `优化` 升级 Gradle 发行版本 7.3.3 -> 7.4-rc-2 + # v6.0.1 ###### 2022/01/01 @@ -190,11 +213,11 @@ ****** -* [AutoJs6-VSCode-Ext](https://github.com/SuperMonster003/AutoJs6-VSCode-Ext) { author: [SuperMonster003](https://github.com/SuperMonster003) } +* [AutoJs6-VSCode-Extension](https://github.com/SuperMonster003/AutoJs6-VSCode-Extension) { author: [SuperMonster003](https://github.com/SuperMonster003) } - `适用于 VSCode 的桌面开发插件 (二次开发项目)` * [AutoX](https://github.com/kkevsekk1/AutoX) { author: [kkevsekk1](https://github.com/kkevsekk1) } - `安卓平台 JavaScript 自动化工具 (二次开发项目)` -[//]: # (* [Auto.js-TypeScript-Declarations](https://github.com/SuperMonster003/Auto.js-TypeScript-Declarations) { author: [SuperMonster003](https://github.com/SuperMonster003) }) -[//]: # ( - `Auto.js 声明文件 (.d.ts)`) +[comment]: <> (* [Auto.js-TypeScript-Declarations](https://github.com/SuperMonster003/Auto.js-TypeScript-Declarations) { author: [SuperMonster003](https://github.com/SuperMonster003) }) +[comment]: <> ( - `Auto.js 声明文件 (.d.ts)`) diff --git a/app/build.gradle b/app/build.gradle index 21f48c8e..13fdffe5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,16 +1,12 @@ plugins { - id "com.android.application" - id "com.jakewharton.butterknife" - id "kotlin-android" - id "kotlin-kapt" + id 'com.android.application' + id 'com.jakewharton.butterknife' + id 'kotlin-android' + id 'kotlin-kapt' } -def annotationsVer = "4.8.0" -def butterKnifeVer = "10.2.3" -def leakcanaryVer = "2.7" - def properties = new Properties() -def propFile = new File("sign.properties") +def propFile = new File('sign.properties') def isPropFileExists = propFile.exists() isPropFileExists && properties.load(new FileInputStream(propFile)) @@ -22,32 +18,32 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { } // tasks.withType(JavaCompile) { -// options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked" +// options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked' // } android { signingConfigs { isPropFileExists && release { - storeFile file(properties["storeFile"]) - keyPassword properties["keyPassword"] - keyAlias properties["keyAlias"] - storePassword properties["storePassword"] + storeFile file(properties['storeFile']) + keyPassword properties['keyPassword'] + keyAlias properties['keyAlias'] + storePassword properties['storePassword'] } } - compileSdkVersion versions.compile + compileSdkVersion versions.project.compile defaultConfig { - applicationId "org.autojs.autojs" - minSdkVersion versions.mini - targetSdkVersion versions.target - versionCode versions.appVersionCode - versionName versions.appVersionName - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + applicationId 'org.autojs.autojs' + minSdkVersion versions.project.mini + targetSdkVersion versions.project.target + versionCode versions.project.appVersionCode + versionName versions.project.appVersionName + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' multiDexEnabled true javaCompileOptions { annotationProcessorOptions { arguments = [ - "resourcePackageName": applicationId, - "androidManifestFile": "$projectDir/src/main/AndroidManifest.xml".toString() + 'resourcePackageName': applicationId, + 'androidManifestFile': "$projectDir/src/main/AndroidManifest.xml".toString() ] } } @@ -56,7 +52,7 @@ android { debug { shrinkResources false minifyEnabled false - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' if (isPropFileExists) { signingConfig signingConfigs.release } @@ -68,7 +64,7 @@ android { release { shrinkResources false minifyEnabled false - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' if (isPropFileExists) { signingConfig signingConfigs.release } @@ -77,17 +73,17 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_16 targetCompatibility JavaVersion.VERSION_16 - encoding = "utf-8" + encoding = 'utf-8' } lintOptions { abortOnError false - disable "MissingTranslation" - disable "ExtraTranslation" + disable 'MissingTranslation' + disable 'ExtraTranslation' } configurations.all { - resolutionStrategy.force "com.google.code.findbugs:jsr305:3.0.1" + resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1' } - flavorDimensions "channel" + flavorDimensions 'channel' splits { // Configures multiple APKs based on ABI. abi { @@ -101,7 +97,7 @@ android { reset() // Specifies a list of ABIs that Gradle should create APKs for. - include "armeabi-v7a" + include 'x86', 'armeabi-v7a' // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false @@ -109,14 +105,14 @@ android { } productFlavors { common { - buildConfigField "String", "CHANNEL", "\"common\"" - buildConfigField "String", "APP_SINCE_DATE", "\"${versions.appSinceDate}\"" + buildConfigField 'String', 'CHANNEL', '"common"' + buildConfigField 'String', 'APP_SINCE_DATE', "\"${versions.project.appSinceDate}\"" } } applicationVariants.all { variant -> variant.mergeAssetsProvider.configure { doLast { - delete(fileTree(dir: outputDir, includes: ["declarations/**"])) + delete(fileTree(dir: outputDir, includes: ['declarations/**'])) } } } @@ -128,103 +124,94 @@ repositories { dependencies { // JUnit - testImplementation "junit:junit:${junitVer}" + testImplementation "junit:junit:${versions.junit}" // LeakCanary - debugImplementation "com.squareup.leakcanary:leakcanary-android:${leakcanaryVer}" + debugImplementation "com.squareup.leakcanary:leakcanary-android:${versions.leakcanary}" // Kotlin - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0-native-mt" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0-native-mt' // Android Annotations - kapt "org.androidannotations:androidannotations:${annotationsVer}" - implementation "org.androidannotations:androidannotations-api:${annotationsVer}" + kapt "org.androidannotations:androidannotations:${versions.annotations}" + implementation "org.androidannotations:androidannotations-api:${versions.annotations}" // ButterKnife - kapt "com.jakewharton:butterknife-compiler:${butterKnifeVer}" - implementation "com.jakewharton:butterknife:${butterKnifeVer}" + kapt "com.jakewharton:butterknife-compiler:${versions.butterKnife}" + implementation "com.jakewharton:butterknife:${versions.butterKnife}" // Android supports - implementation "androidx.appcompat:appcompat:1.4.0" - implementation "androidx.cardview:cardview:1.0.0" - implementation "com.google.android.material:material:1.6.0-alpha01" - implementation "androidx.multidex:multidex:2.0.1" - - // Material Dialogs - implementation "com.afollestad.material-dialogs:core:0.9.6.0" + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.multidex:multidex:2.0.1' // SwipeRefreshLayout - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" + implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' // Common Markdown - implementation "com.github.atlassian:commonmark-java:commonmark-parent-0.9.0" + implementation 'com.github.atlassian:commonmark-java:commonmark-parent-0.9.0' // Android issue reporter (a github issue reporter) - implementation "com.heinrichreimersoftware:android-issue-reporter:1.3.1" + implementation 'com.heinrichreimersoftware:android-issue-reporter:1.3.1' // MultiLevelListView - implementation "com.github.hyb1996:android-multi-level-listview:1.1" + implementation 'com.github.hyb1996:android-multi-level-listview:1.1' // Licenses Dialog - implementation "de.psdev.licensesdialog:licensesdialog:2.2.0" + implementation 'de.psdev.licensesdialog:licensesdialog:2.2.0' // Expandable RecyclerView - implementation "com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1" + implementation 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1' // FlexibleDivider - implementation "com.yqritc:recyclerview-flexibledivider:1.4.0" + implementation 'com.yqritc:recyclerview-flexibledivider:1.4.0' // AVLoadingView - implementation "com.wang.avi:library:2.1.3" + implementation 'com.wang.avi:library:2.1.3' // Commons Lang - implementation "org.apache.commons:commons-lang3:3.12.0" + implementation 'org.apache.commons:commons-lang3:3.12.0' // Expandable RecyclerView - implementation "com.thoughtbot:expandablerecyclerview:1.3" + implementation 'com.thoughtbot:expandablerecyclerview:1.3' - implementation "com.github.hyb1996:Auto.js-ApkBuilder:1.0.1" + implementation 'com.github.hyb1996:Auto.js-ApkBuilder:1.0.1' // RxJava - implementation "io.reactivex.rxjava2:rxjava:2.2.21" - implementation "io.reactivex.rxjava2:rxandroid:2.1.1" + implementation 'io.reactivex.rxjava2:rxjava:2.2.21' + implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' // Retrofit - implementation "com.squareup.retrofit2:retrofit:2.9.0" - implementation "com.squareup.retrofit2:converter-gson:2.9.0" - implementation "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0" - implementation "com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2" + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' // Glide - kapt "com.github.bumptech.glide:compiler:4.12.0" - implementation "com.github.bumptech.glide:glide:4.12.0" + kapt "com.github.bumptech.glide:compiler:${versions.glide}" // Joda Time - implementation "joda-time:joda-time:2.10.13" + implementation 'joda-time:joda-time:2.10.13' // Tasker Plugin - implementation "com.twofortyfouram:android-plugin-client-sdk-for-locale:4.0.3" + implementation 'com.twofortyfouram:android-plugin-client-sdk-for-locale:4.0.3' // Flurry - implementation "com.flurry.android:analytics:13.1.0" - - // Material Dialogs - implementation "com.afollestad.material-dialogs:commons:0.9.6.0" + implementation 'com.flurry.android:analytics:13.1.0' // Android Job - implementation "com.evernote:android-job:1.4.2" + implementation 'com.evernote:android-job:1.4.2' // Extracted from com.github.hyb1996:MutableTheme:1.0.0 - implementation "com.jrummyapps:colorpicker:2.1.7" - implementation "androidx.recyclerview:recyclerview:1.2.1" - implementation "com.github.ozodrukh:CircularReveal:2.0.1" + implementation 'com.jrummyapps:colorpicker:2.1.7' + implementation 'androidx.recyclerview:recyclerview:1.2.1' + implementation 'com.github.ozodrukh:CircularReveal:2.0.1' // Bugly - implementation project(":libs:com.tencent.bugly.crashreport-2.6.6") + implementation project(':libs:com.tencent.bugly.crashreport-2.6.6') - implementation project(":automator") - implementation project(":common") - implementation project(":autojs") + implementation project(':automator') + implementation project(':common') + implementation project(':autojs') } java { diff --git a/app/src/main/assets/doc/CHANGELOG.md b/app/src/main/assets/doc/CHANGELOG.md index eb524821..17fb8a35 100644 --- a/app/src/main/assets/doc/CHANGELOG.md +++ b/app/src/main/assets/doc/CHANGELOG.md @@ -4,6 +4,25 @@ ****** +# v6.0.2 + +###### 2022/02/05 + +* `新增` images.bilateralFilter() 双边滤波图像处理方法 +* `修复` 多次调用 toast 只生效最后一次调用的问题 +* `修复` toast.dismiss() 可能无效的问题 +* `修复` 客户端模式及服务端模式开关可能无法正常工作的问题 +* `修复` 客户端模式及服务端模式开关状态不能正常刷新的问题 +* `修复` Android 7 解析 UI 模式 text 元素异常 (Ref to TonyJiangWJ) _[`issue #4`](https://github.com/SuperMonster003/AutoJs6/issues/4)_ +* `优化` 忽略 sleep() 的 ScriptInterruptedException 异常 +* `优化` 附加 Androidx AppCompat (Legacy) 版本 1.0.2 +* `优化` 升级 Androidx AppCompat 版本 1.4.0 -> 1.4.1 +* `优化` 升级 Androidx Preference 版本 1.1.1 -> 1.2.0 +* `优化` 升级 Okhttp3 版本 3.10.0 -> 5.0.0-alpha.3 -> 5.0.0-alpha.4 +* `优化` 升级 Android Material 版本 1.6.0-alpha01 -> 1.6.0-alpha02 +* `优化` 升级 Android Gradle 插件版本 7.2.0-alpha06 -> 7.2.0-beta01 +* `优化` 升级 Gradle 发行版本 7.3.3 -> 7.4-rc-2 + # v6.0.1 ###### 2022/01/01 diff --git a/app/src/main/assets/docs/all.html b/app/src/main/assets/docs/all.html index b9861522..44a23296 100644 --- a/app/src/main/assets/docs/all.html +++ b/app/src/main/assets/docs/all.html @@ -961,7 +961,7 @@
  • 如果想要在电脑而不是手机上开发Auto.js,可以使用VS Code以及相应的Auto.js插件使得在电脑上编辑的脚本能推送到手机运行,参见Auto.js-VSCode-Extension
  • 本文档的章节大致上是以模块来分的,总体上可以分成"自动操作"类模块(控件操作、触摸模拟、按键模拟等)和其他类模块(设备、应用、界面等)。

    -

    "自动操作"的部分又可以大致分为基于控件和基于坐标的操作。基于坐标的操作是传统按键精灵、触摸精灵等脚本软件采用的方式,通过屏幕坐标来点击、长按指定位置模拟操作,从而到达目的。例如click(100, 200), press(100, 200, 500)等。这种方式在游戏类脚本中比较有可行性,结合找图找色、坐标放缩功能也能达到较好的兼容性。但是,这种方式对一般软件脚本却难以达到想要的效果,而且这种方式需要安卓7.0版本以上或者root权限才能执行。所以对于一般软件脚本(例如批量添加联系人、自动提取短信验证码等等),我们采用基于控件的模拟操作方式,结合通知事情、按键事情等达成更好的工作流。这些部分的文档参见基于控件的操作基于坐标的操作

    +

    "自动操作"的部分又可以大致分为基于控件和基于坐标的操作。基于坐标的操作是传统按键精灵、触摸精灵等脚本软件采用的方式,通过屏幕坐标来点击、长按指定位置模拟操作,从而到达目的。例如click(100, 200), press(100, 200, 500)等。这种方式在游戏类脚本中比较有可行性,结合找图找色、坐标放缩功能也能达到较好的兼容性。但是,这种方式对一般软件脚本却难以达到想要的效果,而且这种方式需要root权限才能执行。所以对于一般软件脚本(例如批量添加联系人、自动提取短信验证码等等),我们采用基于控件的模拟操作方式,结合通知事情、按键事情等达成更好的工作流。这些部分的文档参见基于控件的操作基于坐标的操作

    其他部分主要包括:

    本文档的章节大致上是以模块来分的,总体上可以分成"自动操作"类模块(控件操作、触摸模拟、按键模拟等)和其他类模块(设备、应用、界面等)。

    -

    "自动操作"的部分又可以大致分为基于控件和基于坐标的操作。基于坐标的操作是传统按键精灵、触摸精灵等脚本软件采用的方式,通过屏幕坐标来点击、长按指定位置模拟操作,从而到达目的。例如click(100, 200), press(100, 200, 500)等。这种方式在游戏类脚本中比较有可行性,结合找图找色、坐标放缩功能也能达到较好的兼容性。但是,这种方式对一般软件脚本却难以达到想要的效果,而且这种方式需要安卓7.0版本以上或者root权限才能执行。所以对于一般软件脚本(例如批量添加联系人、自动提取短信验证码等等),我们采用基于控件的模拟操作方式,结合通知事情、按键事情等达成更好的工作流。这些部分的文档参见基于控件的操作基于坐标的操作

    +

    "自动操作"的部分又可以大致分为基于控件和基于坐标的操作。基于坐标的操作是传统按键精灵、触摸精灵等脚本软件采用的方式,通过屏幕坐标来点击、长按指定位置模拟操作,从而到达目的。例如click(100, 200), press(100, 200, 500)等。这种方式在游戏类脚本中比较有可行性,结合找图找色、坐标放缩功能也能达到较好的兼容性。但是,这种方式对一般软件脚本却难以达到想要的效果,而且这种方式需要root权限才能执行。所以对于一般软件脚本(例如批量添加联系人、自动提取短信验证码等等),我们采用基于控件的模拟操作方式,结合通知事情、按键事情等达成更好的工作流。这些部分的文档参见基于控件的操作基于坐标的操作

    其他部分主要包括: