6.7.0 - Alpha18 - 打包应用设置页面增加前台服务开关 (issue #406)

This commit is contained in:
SuperMonster003
2026-01-29 00:01:25 +08:00
parent 2f223d1d67
commit 1dce33b180
26 changed files with 322 additions and 91 deletions

View File

@@ -1,7 +1,7 @@
{
"$data": {
"v6.7.0": {
"released_date": "2026/01/28",
"released_date": "2026/01/29",
"feature": [
"插件中心功能, 支持插件的安装/卸载/更新等操作 (入口: 主页抽屉按钮/主页标签页)",
"Paddle OCR (PP-OCRv5) 插件, 用于光学字符识别",
@@ -110,7 +110,7 @@
"构建工具启用 isCleanup[Paddle/Rapid]Ocr 配置选项时无法正常完成 Rebuild Project 任务的问题"
],
"improvement": [
"插件化 Paddle OCR (PP-OCRv3) 相关功能 _[`issue #334`](http://issues.autojs6.com/334)_ _[`issue #331`](http://issues.autojs6.com/331)_",
"插件化 Paddle OCR (PP-OCRv3) 相关功能 _[`issue #334`](http://issues.autojs6.com/334)_ _[`issue #331`](http://issues.autojs6.com/331)_ _[`issue #325`](http://issues.autojs6.com/325)_",
"runtime.loadJar 方法增强兼容性 (by [LYS86](https://github.com/LYS86)) _[`pr #475`](http://pr.autojs6.com/475)_",
"ui.getStatusBarHeight 方法/statusBarHeight 属性 (getter) 增强一定程度的兼容性",
"console.log 等方法打印全局对象 (images, app, ocr 等) 时支持显示详细信息",
@@ -128,6 +128,7 @@
"文件管理器浮动按钮展开后点击菜单项时优化菜单收起时机",
"文件管理器/任务面板支持显示文件/任务数量统计信息",
"打包应用页面默认勾选必要权限 (WAKE_LOCK/INTERNET/WRITE_EXTERNAL_STORAGE) _[`issue #397`](http://issues.autojs6.com/397)_",
"打包应用设置页面增加前台服务开关 _[`issue #406`](http://issues.autojs6.com/406)_",
"脚本项目配置文件保存时增加键名冲突检测机制防止键名歧义",
"崩溃报告页面支持双指缩放调整字体大小并添加常用功能按钮",
"应用启动器图标支持自适应图标特性 _[`issue #405`](http://issues.autojs6.com/405)_",
@@ -143,14 +144,14 @@
"浮动按钮 \"更多\" 对话框使用异步加载数据方式提升显示流畅度",
"浮动按钮 \"运行脚本\" 对话框增加 \"主页\" 菜单项",
"浮动按钮 \"运行脚本\" 对话框支持最小化及状态恢复并尽最大努力保持窗口常驻或自动恢复",
"使用 LiveData 及 SharedFlow 替代已弃用的 LocalBroadcastManager",
"使用 [LiveData](https://developer.android.com/topic/libraries/architecture/livedata)[SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow) 替代已弃用的 [LocalBroadcastManager](https://developer.android.com/jetpack/androidx/releases/localbroadcastmanager)",
"Gradle 构建脚本提升 7z 格式文件的解压效率",
"Gradle 构建脚本支持获取详细的 Android Studio IDE 版本 (如 \"2025.1.4.7\")",
"Gradle 构建脚本支持自动生成 VersionCodesList 类所需数据以降低脚本启动延迟",
"使用版本目录 (Version Catalogs) 集中管理 Gradle 依赖和插件版本",
"使用 [版本目录 (Version Catalogs)](https://developer.android.com/build/migrate-to-catalogs) 集中管理 Gradle 依赖和插件版本",
"模块化 Gradle 构建脚本, 将共享构建逻辑迁移至 build-logic 并抽象为约定插件",
"使用 Gradle 约定插件简化本地 AAR 库加载逻辑",
"使用 Toolchain 替代 sourceCompatibility/targetCompatibility 以降低构建环境差异"
"使用 [Toolchain](https://docs.gradle.org/current/userguide/toolchains.html) 替代 sourceCompatibility/targetCompatibility 以降低构建环境差异"
],
"dependency": [
"本地化 Root Shell 版本 1.6",

View File

@@ -395,7 +395,7 @@
<service android:name="org.autojs.autojs.ui.enhancedfloaty.FloatyService" />
<service
android:name="org.autojs.autojs.external.foreground.MainActivityForegroundService"
android:name="org.autojs.autojs.external.foreground.AppForegroundService"
android:foregroundServiceType="specialUse">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"

View File

@@ -5,16 +5,18 @@ import android.content.Intent
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
import android.os.Build
import android.os.IBinder
import org.autojs.autojs.AbstractAutoJs.Companion.isInrt
import org.autojs.autojs.tool.ForegroundServiceCreator
import org.autojs.autojs.ui.main.MainActivity
import org.autojs.autojs.util.ForegroundServiceUtils.FOREGROUND_SERVICE_TYPE_UNKNOWN
import org.autojs.autojs6.R
import org.autojs.autojs.inrt.LogActivity as LogActivityInrt
/**
* Modified by SuperMonster003 as of Apr 10, 2022.
* Transformed by SuperMonster003 on May 13, 2023.
* Modified by SuperMonster003 as of Jan 28, 2026.
*/
class MainActivityForegroundService : Service() {
class AppForegroundService : Service() {
private lateinit var mForegroundServiceCreator: ForegroundServiceCreator
@@ -30,6 +32,9 @@ class MainActivityForegroundService : Service() {
override fun onCreate() {
super.onCreate()
val label = packageManager.getApplicationLabel(applicationInfo).toString()
val intentClass = if (!isInrt) MainActivity::class.java else LogActivityInrt::class.java
// @Hint by SuperMonster003 on Dec 4, 2023.
// ! service.startForeground() may need to be called within "onCreate" rather than a static method.
// ! Reference: https://stackoverflow.com/questions/44425584/context-startforegroundservice-did-not-then-call-service-startforeground
@@ -37,13 +42,13 @@ class MainActivityForegroundService : Service() {
// ! service.startForeground() 可能需要在 "onCreate" 中调用, 而非在静态方法中.
// ! 参阅: https://stackoverflow.com/questions/44425584/context-startforegroundservice-did-not-then-call-service-startforeground
mForegroundServiceCreator = ForegroundServiceCreator.Builder(this)
.setClassName(MainActivityForegroundService::class.java)
.setIntent(Intent(this, MainActivity::class.java))
.setClassName(AppForegroundService::class.java)
.setIntent(Intent(this, intentClass))
.setNotificationId(NOTIFICATION_ID)
.setServiceName(R.string.foreground_notification_channel_name)
.setServiceDescription(R.string.foreground_notification_channel_name)
.setNotificationTitle(R.string.foreground_notification_title)
.setNotificationContent(R.string.foreground_notification_text)
.setServiceName(getString(R.string.foreground_notification_channel_name, label))
.setServiceDescription(getString(R.string.foreground_notification_channel_name, label))
.setNotificationTitle(getString(R.string.foreground_notification_title, label))
.setNotificationContent(getString(R.string.foreground_notification_text, label))
.create()
.apply { startForeground(mForegroundServiceType) }
}

View File

@@ -4,11 +4,11 @@ import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import org.autojs.autojs.core.console.ConsoleImpl
import org.autojs.autojs.inrt.autojs.AutoJs
import org.autojs.autojs.inrt.launch.GlobalProjectLauncher
import org.autojs.autojs.ui.BaseActivity
import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R
import org.autojs.autojs6.databinding.ActivityMainInrtBinding
@@ -29,6 +29,7 @@ class LogActivity : BaseActivity() {
setContentView(binding.root)
binding.toolbar.apply {
setSupportActionBar(this)
ViewUtils.setStatusBarIconLight(this@LogActivity, false)
}
binding.console.apply {
setConsole(AutoJs.instance.globalConsole as ConsoleImpl)

View File

@@ -1,14 +1,18 @@
package org.autojs.autojs.inrt
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import org.autojs.autojs.theme.preference.ThemeColorPermissionSwitchPreference
import androidx.preference.PreferenceFragmentCompat
import org.autojs.autojs.runtime.api.Permissions
import org.autojs.autojs.theme.preference.Syncable
import org.autojs.autojs.util.ViewUtils.excludePaddingClippableViewFromBottomNavigationBar
import org.autojs.autojs6.R
import org.autojs.autojs6.databinding.ActivitySettingsInrtBinding
/**
* Created by Stardust on Dec 8, 2017.
* Modified by SuperMonster003 as of Oct 27, 2023.
* Modified by SuperMonster003 as of Jan 28, 2026.
*/
class SettingsActivity : AppCompatActivity() {
@@ -16,34 +20,58 @@ class SettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivitySettingsInrtBinding.inflate(layoutInflater).also { setContentView(it.root) }
val binding = ActivitySettingsInrtBinding.inflate(layoutInflater).also {
setContentView(it.root)
}
supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_setting, preferenceFragment)
.commit()
binding.toolbar.apply {
setTitle(R.string.text_settings)
setSupportActionBar(this)
setNavigationOnClickListener { finish() }
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
Permissions.registerRequestMultiplePermissionsLauncher(this)
}
override fun onResume() {
super.onResume()
findPreference(R.string.key_all_files_access)?.sync()
findPreference(R.string.key_display_over_other_apps)?.sync()
findPreference(R.string.key_post_notifications_permission)?.sync()
listOf(
R.string.key_foreground_service,
R.string.key_post_notifications_permission,
R.string.key_display_over_other_apps,
R.string.key_all_files_access,
).forEach { findPreference(it)?.sync() }
}
private fun findPreference(keyRes: Int): ThemeColorPermissionSwitchPreference? {
private fun findPreference(keyRes: Int): Syncable? {
return preferenceFragment.findPreference(getString(keyRes))
}
class PreferenceFragment : androidx.preference.PreferenceFragmentCompat() {
class PreferenceFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.preference_inrt)
addPreferencesFromResource(R.xml.fragment_preferences_inrt)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setDivider(null)
setDividerHeight(0)
listView.isHorizontalScrollBarEnabled = false
listView.isVerticalScrollBarEnabled = false
listView.excludePaddingClippableViewFromBottomNavigationBar()
}
}
}

View File

@@ -0,0 +1,26 @@
package org.autojs.autojs.inrt.theme.preference
import android.content.Context
import android.util.AttributeSet
import org.autojs.autojs.service.ForegroundService
import org.autojs.autojs.theme.preference.ThemeColorServiceSwitchPreference
class ForegroundServiceSwitchPreference : ThemeColorServiceSwitchPreference {
val svc by lazy { ForegroundService(context) }
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context) : super(context)
override fun isRunning() = svc.isRunning
override fun start() = svc.start()
override fun stop() = svc.stop()
}

View File

@@ -3,13 +3,13 @@ package org.autojs.autojs.service
import android.content.Context
import android.content.Intent
import android.os.Build
import org.autojs.autojs.external.foreground.MainActivityForegroundService
import org.autojs.autojs.external.foreground.AppForegroundService
import org.autojs.autojs.ui.main.drawer.ServiceItemHelper
import org.autojs.autojs.util.ForegroundServiceUtils
class ForegroundService(override val context: Context) : ServiceItemHelper {
private val mClassName = MainActivityForegroundService::class.java
private val mClassName = AppForegroundService::class.java
override val isRunning
get() = ForegroundServiceUtils.isRunning(context, mClassName)

View File

@@ -0,0 +1,7 @@
package org.autojs.autojs.theme.preference
interface Syncable {
fun sync()
}

View File

@@ -3,7 +3,7 @@ package org.autojs.autojs.theme.preference
import android.content.Context
import android.util.AttributeSet
abstract class ThemeColorPermissionSwitchPreference : ThemeColorSwitchPreference {
abstract class ThemeColorPermissionSwitchPreference : ThemeColorSwitchPreference, Syncable {
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
@@ -13,7 +13,7 @@ abstract class ThemeColorPermissionSwitchPreference : ThemeColorSwitchPreference
constructor(context: Context) : super(context)
fun sync() {
override fun sync() {
isChecked = has()
}
@@ -23,7 +23,10 @@ abstract class ThemeColorPermissionSwitchPreference : ThemeColorSwitchPreference
abstract fun revoke(): Boolean
override fun onClick() = toggle()
override fun onClick() {
toggle()
super.onClick()
}
private fun toggle() {
if (isChecked) revoke() else request()

View File

@@ -0,0 +1,35 @@
package org.autojs.autojs.theme.preference
import android.content.Context
import android.util.AttributeSet
abstract class ThemeColorServiceSwitchPreference : ThemeColorSwitchPreference, Syncable {
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context) : super(context)
override fun sync() {
isChecked = isRunning()
}
abstract fun isRunning(): Boolean
abstract fun start(): Boolean
abstract fun stop(): Boolean
override fun onClick() {
toggle()
super.onClick()
}
private fun toggle() {
if (isChecked) stop() else start()
}
}

View File

@@ -21,7 +21,7 @@ import org.autojs.autojs.app.tool.PointerLocationTool
import org.autojs.autojs.core.accessibility.AccessibilityTool
import org.autojs.autojs.core.plugin.center.PluginCenterActivity
import org.autojs.autojs.core.pref.Pref
import org.autojs.autojs.external.foreground.MainActivityForegroundService
import org.autojs.autojs.external.foreground.AppForegroundService
import org.autojs.autojs.permission.AllFilesAccessPermission
import org.autojs.autojs.permission.DisplayOverOtherAppsPermission
import org.autojs.autojs.permission.IgnoreBatteryOptimizationsPermission
@@ -187,7 +187,7 @@ open class DrawerFragment : Fragment() {
descriptionRes = R.string.description_foreground_service,
prefKey = R.string.key_foreground_service,
).setOnLaunchSettingsListener {
NotificationUtils.launchChannelSettings(mContext, MainActivityForegroundService::class.java)
NotificationUtils.launchChannelSettings(mContext, AppForegroundService::class.java)
}
mFloatingButtonItem = DrawerMenuToggleableItem(

View File

@@ -2,12 +2,13 @@ package org.autojs.autojs.ui.main.drawer
import android.os.Handler
import android.os.Looper
import org.autojs.autojs.theme.preference.Syncable
interface IToggleableItem {
interface IToggleableItem : Syncable {
fun toggle(aimState: Boolean)
fun sync()
override fun sync()
fun sync(callback: Runnable) {
sync()

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="52dp"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingEnd="?android:attr/scrollbarSize">
<ImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/content_inset"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:layout_marginVertical="12dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="6dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:fontFamily="sans-serif"
android:maxLines="1"
android:textColor="@color/day_full"
android:textSize="15sp"
tools:text="@string/text_sample_string" />
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:fontFamily="sans-serif"
android:maxLines="4"
android:textColor="@color/day_alpha_60"
android:textSize="12sp"
tools:text="@string/text_sample_string" />
</LinearLayout>
<!-- Preference should place its actual preference widget here. -->
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical"
android:gravity="center_vertical"
android:layout_marginEnd="4dp"
android:orientation="vertical" />
</LinearLayout>

View File

@@ -332,9 +332,9 @@
<string name="error_unknown_type">نوع غير معروف: %s</string>
<string name="error_webp_lossless_quality_not_supported">لا يمكن ضغط تنسيق WebP-Lossless باستخدام معامل الجودة؛ استخدم JPEG/PNG/WebP-Lossy بدلاً من ذلك</string>
<string name="file_not_exist_or_readable">الملف غير موجود أو قابلاً للقراءة: %s</string>
<string name="foreground_notification_channel_name">خدمة مقدمة AutoJs6</string>
<string name="foreground_notification_text">انقر لإطلاق AutoJs6</string>
<string name="foreground_notification_title">خدمة مقدمة AutoJs6</string>
<string name="foreground_notification_channel_name">خدمة مقدمة %1$s</string>
<string name="foreground_notification_text">انقر لإطلاق %1$s</string>
<string name="foreground_notification_title">خدمة مقدمة %1$s</string>
<string name="format_build_succeeded" formatted="true">نجح بناء.\nمسار الملف: %s</string>
<string name="format_debug_bar_title"><![CDATA[تصحيح [ %s ]]]></string>
<string name="format_editor_info" formatted="false">chars: %s\nالخطوط: %s\nبحجم: %s</string>
@@ -1202,5 +1202,8 @@
<string name="text_post_notifications_permission_rationale">لضمان عمل خدمات المقدّمة في AutoJs6 وغيرها بشكل طبيعي، وتمكين السكربتات من نشر الإشعارات، يجب منح AutoJs6 إذن \"نشر الإشعارات\".</string>
<string name="description_pointer_location">\"موقع المؤشر\" هي ميزة تصحيح أخطاء ضمن خيارات المطوّر في Android.\nعند تفعيلها، يعرض النظام على الشاشة معلومات نقاط اللمس مثل [الإحداثيات/مسار الحركة/العدد/الحجم/سرعة الحركة/الضغط]، مما يسهل [كتابة/تصحيح/التحقق من] السكربتات ذات الصلة.</string>
<string name="error_an_error_occurred">حدث خطأ</string>
<string name="text_permission_management">إدارة الأذونات</string>
<string name="text_service_management">إدارة الخدمات</string>
<string name="summary_foreground_service_inrt">تتيح خدمة المقدمة الحفاظ على تشغيل التطبيق والبرامج النصية بشكل أكثر استقرارًا في الخلفية</string>
</resources>

View File

@@ -327,9 +327,9 @@
<string name="error_unknown_type">Unknown type: %s</string>
<string name="error_webp_lossless_quality_not_supported">Format WebP-Lossless cannot be compressed with a quality parameter, use JPEG/PNG/WebP-Lossy instead</string>
<string name="file_not_exist_or_readable">File does not exist or readable: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 foreground service</string>
<string name="foreground_notification_text">Click to launch AutoJs6</string>
<string name="foreground_notification_title">AutoJs6 foreground service</string>
<string name="foreground_notification_channel_name">%1$s foreground service</string>
<string name="foreground_notification_text">Click to launch %1$s</string>
<string name="foreground_notification_title">%1$s foreground service</string>
<string name="format_build_succeeded" formatted="true">Build succeeded.\nFile path: %s</string>
<string name="format_debug_bar_title"><![CDATA[Debug [ %s ]]]></string>
<string name="format_editor_info" formatted="false">Chars: %d\nLines: %d\nSize: %s</string>
@@ -1197,5 +1197,8 @@
<string name="text_post_notifications_permission_rationale">To ensure that AutoJs6 foreground services, etc. can work properly and that scripts can post notifications, AutoJs6 must be granted the \"post notifications\" permission.</string>
<string name="description_pointer_location">\"Pointer location\" is a debugging feature in Android Developer options.\nWhen enabled, the system will display information about touch point(s) on the screen, such as [coordinates/movement trajectory/count/size/movement speed/pressure], which helps with [writing/debugging/verification] of related scripts.</string>
<string name="error_an_error_occurred">An error occurred</string>
<string name="text_permission_management">Permission management</string>
<string name="text_service_management">Service management</string>
<string name="summary_foreground_service_inrt">The foreground service helps keep the app and scripts running more reliably in the background</string>
</resources>

View File

@@ -330,9 +330,9 @@
<string name="error_unknown_type">Tipo desconocido: %s</string>
<string name="error_webp_lossless_quality_not_supported">El formato WebP-Lossless no se puede comprimir con un parámetro de calidad; usa JPEG/PNG/WebP-Lossy en su lugar</string>
<string name="file_not_exist_or_readable">El archivo no existe o no se puede leer: %s</string>
<string name="foreground_notification_channel_name">Servicio de primer plano de AutoJs6</string>
<string name="foreground_notification_text">Haga clic para iniciar AutoJs6</string>
<string name="foreground_notification_title">Servicio de primer plano de AutoJs6</string>
<string name="foreground_notification_channel_name">Servicio de primer plano de %1$s</string>
<string name="foreground_notification_text">Haga clic para iniciar %1$s</string>
<string name="foreground_notification_title">Servicio de primer plano de %1$s</string>
<string name="format_build_succeeded" formatted="true">La construcción se ha realizado con éxito.\nRuta del archivo: %s</string>
<string name="format_debug_bar_title"><![CDATA[Depuración [ %s ]]]></string>
<string name="format_editor_info" formatted="false">Caracteres: %d\nLíneas: %d\nTamaño: %s</string>
@@ -1200,5 +1200,8 @@
<string name="text_post_notifications_permission_rationale">Para garantizar que los servicios en primer plano de AutoJs6, etc. funcionen correctamente y que los scripts puedan publicar notificaciones, AutoJs6 debe recibir el permiso de \"publicar notificaciones\".</string>
<string name="description_pointer_location">\"Ubicación del puntero\" es una función de depuración en las opciones de desarrollador de Android.\nAl activarla, el sistema mostrará en pantalla información del/de los punto(s) de toque, como [coordenadas/trayectoria de movimiento/cantidad/tamaño/velocidad de movimiento/presión], lo que facilita la [escritura/depuración/verificación] de los scripts relacionados.</string>
<string name="error_an_error_occurred">Se produjo un error</string>
<string name="text_permission_management">Gestión de permisos</string>
<string name="text_service_management">Gestión de servicios</string>
<string name="summary_foreground_service_inrt">El servicio en primer plano permite mantener la app y los scripts en ejecución de forma más estable en segundo plano</string>
</resources>

View File

@@ -330,9 +330,9 @@
<string name="error_unknown_type">Type inconnu : %s</string>
<string name="error_webp_lossless_quality_not_supported">Le format WebP-Lossless ne peut pas être compressé avec un paramètre de qualité ; utilisez plutôt JPEG/PNG/WebP-Lossy</string>
<string name="file_not_exist_or_readable">Le fichier n\'existe pas ou n\'est pas lisible : %s</string>
<string name="foreground_notification_channel_name">Service d\'avant-plan AutoJs6</string>
<string name="foreground_notification_text">Cliquez pour lancer AutoJs6</string>
<string name="foreground_notification_title">Service AutoJs6 au premier plan</string>
<string name="foreground_notification_channel_name">Service d\'avant-plan %1$s</string>
<string name="foreground_notification_text">Cliquez pour lancer %1$s</string>
<string name="foreground_notification_title">Service %1$s au premier plan</string>
<string name="format_build_succeeded" formatted="true">Construction réussie.\nPlateau du fichier : %s</string>
<string name="format_debug_bar_title"><![CDATA[Debug [ %s ]]]></string>
<string name="format_editor_info" formatted="false">Chars : %d\nLines : %d\nSize : %s</string>
@@ -1200,5 +1200,8 @@
<string name="text_post_notifications_permission_rationale">Afin de garantir que les services au premier plan d\'AutoJs6, etc. fonctionnent correctement et que les scripts puissent publier des notifications, AutoJs6 doit se voir accorder l\'autorisation de \"publier des notifications\".</string>
<string name="description_pointer_location">\"Emplacement du pointeur\" est une fonctionnalité de débogage dans les options pour les développeurs d\'Android.\nUne fois activée, le système affiche à l\'écran des informations sur le(s) point(s) de contact, telles que [coordonnées/trajectoire de déplacement/nombre/taille/vitesse de déplacement/pression], ce qui facilite [l\'écriture/le débogage/la vérification] des scripts associés.</string>
<string name="error_an_error_occurred">Une erreur s\'est produite</string>
<string name="text_permission_management">Gestion des autorisations</string>
<string name="text_service_management">Gestion des services</string>
<string name="summary_foreground_service_inrt">Le service au premier plan permet de maintenir l\'application et les scripts en cours d\'exécution de manière plus stable en arrière-plan</string>
</resources>

View File

@@ -331,9 +331,9 @@
<string name="error_unknown_type">不明なタイプ: %s</string>
<string name="error_webp_lossless_quality_not_supported">WebP-Lossless 形式は品質パラメータで圧縮できません, 代わりに JPEG/PNG/WebP-Lossy を使用してください</string>
<string name="file_not_exist_or_readable">ファイルが存在しないか, 読み取り可能でない: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 のフォアグラウンド サービス</string>
<string name="foreground_notification_text">クリックすると, AutoJs6 が起動します</string>
<string name="foreground_notification_title">AutoJs6 のフォアグラウンド・サービス</string>
<string name="foreground_notification_channel_name">%1$s のフォアグラウンド サービス</string>
<string name="foreground_notification_text">クリックすると, %1$s が起動します</string>
<string name="foreground_notification_title">%1$s のフォアグラウンド・サービス</string>
<string name="format_build_succeeded" formatted="true">ビルドに成功しました.\nファイル パス: %s</string>
<string name="format_debug_bar_title"><![CDATA[デバッグ [ %s ]]]></string>
<string name="format_editor_info" formatted="false">文字数: %d\n行数 %d\nサイズ: %s</string>
@@ -1201,5 +1201,8 @@
<string name="text_post_notifications_permission_rationale">AutoJs6 のフォアグラウンドサービス等が正常に動作し, スクリプトが通知を投稿できるようにするため, AutoJs6 には \"通知の送信\" 権限を付与する必要があります.</string>
<string name="description_pointer_location">\"ポインタの位置\" は Android の開発者向けオプションにあるデバッグ機能です.\n有効にすると, システムが画面上にタッチポイントの [座標/移動軌跡/数/サイズ/移動速度/圧力] などの情報を表示し, 関連スクリプトの [作成/デバッグ/検証] に役立ちます.</string>
<string name="error_an_error_occurred">エラーが発生しました</string>
<string name="text_permission_management">権限管理</string>
<string name="text_service_management">サービス管理</string>
<string name="summary_foreground_service_inrt">フォアグラウンドサービスは, バックグラウンドでアプリとスクリプトの実行をより安定して維持します</string>
</resources>

View File

@@ -332,9 +332,9 @@
<string name="error_unknown_type">알 수없는 유형: %s</string>
<string name="error_webp_lossless_quality_not_supported">WebP-Lossless 형식은 품질 파라미터로 압축할 수 없습니다, 대신 JPEG/PNG/WebP-Lossy를 사용하세요</string>
<string name="file_not_exist_or_readable">파일이 존재하지 않거나 읽을 수 없습니다: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 전경 서비스</string>
<string name="foreground_notification_text">AutoJs6 을 시작하려면 클릭하십시오</string>
<string name="foreground_notification_title">AutoJs6 전경 서비스</string>
<string name="foreground_notification_channel_name">%1$s 전경 서비스</string>
<string name="foreground_notification_text">%1$s 을 시작하려면 클릭하십시오</string>
<string name="foreground_notification_title">%1$s 전경 서비스</string>
<string name="format_build_succeeded" formatted="true">빌드가 성공했습니다.\n파일 경로: %s</string>
<string name="format_debug_bar_title"><![CDATA[디버그 [ %s ]]]></string>
<string name="format_editor_info" formatted="false">숯: %d\n라인: %d\n크기: %s</string>
@@ -1202,5 +1202,8 @@
<string name="text_post_notifications_permission_rationale">AutoJs6 포그라운드 서비스 등이 정상적으로 동작하고 스크립트가 알림을 게시할 수 있도록 하려면, AutoJs6 에 \"알림 게시\" 권한을 부여해야 합니다.</string>
<string name="description_pointer_location">\"포인터 위치\" 는 Android 개발자 옵션에 있는 디버깅 기능입니다.\n활성화하면 시스템이 화면에 터치 지점의 [좌표/이동 궤적/개수/크기/이동 속도/압력] 등의 정보를 표시하여 관련 스크립트의 [작성/디버깅/검증] 에 도움이 됩니다.</string>
<string name="error_an_error_occurred">오류가 발생했습니다</string>
<string name="text_permission_management">권한 관리</string>
<string name="text_service_management">서비스 관리</string>
<string name="summary_foreground_service_inrt">포그라운드 서비스는 백그라운드에서 앱과 스크립트 실행을 더 안정적으로 유지합니다</string>
</resources>

View File

@@ -330,9 +330,9 @@
<string name="error_unknown_type">Неизвестный тип: %s</string>
<string name="error_webp_lossless_quality_not_supported">Формат WebP-Lossless нельзя сжать с параметром качества; используйте вместо этого JPEG/PNG/WebP-Lossy</string>
<string name="file_not_exist_or_readable">\"Файл не существует или не доступен для чтения: %s\".</string>
<string name="foreground_notification_channel_name">Служба AutoJs6 в фоновом режиме</string>
<string name="foreground_notification_text">Нажмите для запуска AutoJs6</string>
<string name="foreground_notification_title">Фоновая служба AutoJs6</string>
<string name="foreground_notification_channel_name">Служба %1$s в фоновом режиме</string>
<string name="foreground_notification_text">Нажмите для запуска %1$s</string>
<string name="foreground_notification_title">Фоновая служба %1$s</string>
<string name="format_build_succeeded" formatted="true">Сборка прошла успешно.\nПуть к файлу: %s</string>
<string name="format_debug_bar_title"><![CDATA[Отладка [ %s ]]]></string>
<string name="format_editor_info" formatted="false">Заголовки: %d\nСтроки: %d\nРазмер: %s</string>
@@ -1200,5 +1200,8 @@
<string name="text_post_notifications_permission_rationale">Чтобы обеспечить корректную работу фоновых служб переднего плана AutoJs6 и возможность публикации уведомлений скриптами, AutoJs6 необходимо предоставить разрешение \"публикации уведомлений\".</string>
<string name="description_pointer_location">\"Положение указателя\" - это отладочная функция в параметрах разработчика Android.\nПосле включения система будет отображать на экране сведения о точке(ах) касания, такие как [координаты/траектория движения/количество/размер/скорость движения/давление], что упрощает [написание/отладку/проверку] соответствующих скриптов.</string>
<string name="error_an_error_occurred">Произошла ошибка</string>
<string name="text_permission_management">Управление разрешениями</string>
<string name="text_service_management">Управление службами</string>
<string name="summary_foreground_service_inrt">Служба на переднем плане позволяет более стабильно поддерживать работу приложения и скриптов в фоновом режиме</string>
</resources>

View File

@@ -328,9 +328,9 @@
<string name="error_unknown_type">未知類型: %s</string>
<string name="error_webp_lossless_quality_not_supported">WebP-Lossless 格式無法使用 quality 質量參數進行壓縮, 可改用 JPEG/PNG/WebP-Lossy</string>
<string name="file_not_exist_or_readable">文件不存在或不可讀: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 前台服務</string>
<string name="foreground_notification_text">點擊返回 AutoJs6 主界面</string>
<string name="foreground_notification_title">AutoJs6 前台服務</string>
<string name="foreground_notification_channel_name">%1$s 前台服務</string>
<string name="foreground_notification_text">點擊返回 %1$s 主界面</string>
<string name="foreground_notification_title">%1$s 前台服務</string>
<string name="format_build_succeeded">構建成功.\n文件路徑: %s</string>
<string name="format_debug_bar_title"><![CDATA[調試 [ %s ]]]></string>
<string name="format_editor_info" formatted="false">字符數: %d\n行數: %d\n大小: %s</string>
@@ -1198,5 +1198,8 @@
<string name="text_post_notifications_permission_rationale">為確保 AutoJs6 前台服務等能夠正常運行, 腳本能夠發佈通知, AutoJs6 需要被授予 \"發佈通知權限\".</string>
<string name="description_pointer_location">\"指針位置\" 是安卓開發者選項中的調試功能.\n開啓後, 系統會在屏幕上顯示觸摸點的 [座標/移動軌跡/數量/大小/移動速度/壓力] 等信息, 便於相關腳本的 [編寫/調試/校對] 等.</string>
<string name="error_an_error_occurred">發生錯誤</string>
<string name="text_permission_management">權限管理</string>
<string name="text_service_management">服務管理</string>
<string name="summary_foreground_service_inrt">前台服務用於在後台更穩定地保持應用及腳本運行</string>
</resources>

View File

@@ -328,9 +328,9 @@
<string name="error_unknown_type">未知型別: %s</string>
<string name="error_webp_lossless_quality_not_supported">WebP-Lossless 格式無法使用 quality 質量引數進行壓縮, 可改用 JPEG/PNG/WebP-Lossy</string>
<string name="file_not_exist_or_readable">檔案不存在或不可讀: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 前臺服務</string>
<string name="foreground_notification_text">點選返回 AutoJs6 主介面</string>
<string name="foreground_notification_title">AutoJs6 前臺服務</string>
<string name="foreground_notification_channel_name">%1$s 前臺服務</string>
<string name="foreground_notification_text">點選返回 %1$s 主介面</string>
<string name="foreground_notification_title">%1$s 前臺服務</string>
<string name="format_build_succeeded">構建成功.\n檔案路徑: %s</string>
<string name="format_debug_bar_title"><![CDATA[除錯 [ %s ]]]></string>
<string name="format_editor_info" formatted="false">字元數: %d\n行數: %d\n大小: %s</string>
@@ -1198,5 +1198,8 @@
<string name="text_post_notifications_permission_rationale">為確保 AutoJs6 前臺服務等能夠正常執行, 指令碼能夠釋出通知, AutoJs6 需要被授予 \"釋出通知許可權\".</string>
<string name="description_pointer_location">\"指標位置\" 是安卓開發者選項中的除錯功能.\n開啟後, 系統會在螢幕上顯示觸控點的 [座標/移動軌跡/數量/大小/移動速度/壓力] 等資訊, 便於相關指令碼的 [編寫/除錯/校對] 等.</string>
<string name="error_an_error_occurred">發生錯誤</string>
<string name="text_permission_management">許可權管理</string>
<string name="text_service_management">服務管理</string>
<string name="summary_foreground_service_inrt">前臺服務用於在後臺更穩定地保持應用及指令碼執行</string>
</resources>

View File

@@ -328,9 +328,9 @@
<string name="error_unknown_type">未知类型: %s</string>
<string name="error_webp_lossless_quality_not_supported">WebP-Lossless 格式无法使用 quality 质量参数进行压缩, 可改用 JPEG/PNG/WebP-Lossy</string>
<string name="file_not_exist_or_readable">文件不存在或不可读: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 前台服务</string>
<string name="foreground_notification_text">点击返回 AutoJs6 主界面</string>
<string name="foreground_notification_title">AutoJs6 前台服务</string>
<string name="foreground_notification_channel_name">%1$s 前台服务</string>
<string name="foreground_notification_text">点击返回 %1$s 主界面</string>
<string name="foreground_notification_title">%1$s 前台服务</string>
<string name="format_build_succeeded">构建成功.\n文件路径: %s</string>
<string name="format_debug_bar_title"><![CDATA[调试 [ %s ]]]></string>
<string name="format_editor_info" formatted="false">字符数: %d\n行数: %d\n大小: %s</string>
@@ -1198,5 +1198,8 @@
<string name="text_post_notifications_permission_rationale">为确保 AutoJs6 前台服务等能够正常运行, 脚本能够发布通知, AutoJs6 需要被授予 \"发布通知权限\".</string>
<string name="description_pointer_location">\"指针位置\" 是安卓开发者选项中的调试功能.\n开启后, 系统会在屏幕上显示触摸点的 [坐标/移动轨迹/数量/大小/移动速度/压力] 等信息, 便于相关脚本的 [编写/调试/校对] 等.</string>
<string name="error_an_error_occurred">发生错误</string>
<string name="text_permission_management">权限管理</string>
<string name="text_service_management">服务管理</string>
<string name="summary_foreground_service_inrt">前台服务用于在后台更稳定地保持应用及脚本运行</string>
</resources>

View File

@@ -587,9 +587,9 @@
<string name="error_unknown_type">Unknown type: %s</string>
<string name="error_webp_lossless_quality_not_supported">Format WebP-Lossless cannot be compressed with a quality parameter, use JPEG/PNG/WebP-Lossy instead</string>
<string name="file_not_exist_or_readable">File does not exist or readable: %s</string>
<string name="foreground_notification_channel_name">AutoJs6 foreground service</string>
<string name="foreground_notification_text">Click to launch AutoJs6</string>
<string name="foreground_notification_title">AutoJs6 foreground service</string>
<string name="foreground_notification_channel_name">%1$s foreground service</string>
<string name="foreground_notification_text">Click to launch %1$s</string>
<string name="foreground_notification_title">%1$s foreground service</string>
<string name="format_build_succeeded" formatted="true">Build succeeded.\nFile path: %s</string>
<string name="format_debug_bar_title"><![CDATA[Debug [ %s ]]]></string>
<string name="format_editor_info" formatted="false">Chars: %d\nLines: %d\nSize: %s</string>
@@ -1457,5 +1457,8 @@
<string name="text_post_notifications_permission_rationale">To ensure that AutoJs6 foreground services, etc. can work properly and that scripts can post notifications, AutoJs6 must be granted the \"post notifications\" permission.</string>
<string name="description_pointer_location">\"Pointer location\" is a debugging feature in Android Developer options.\nWhen enabled, the system will display information about touch point(s) on the screen, such as [coordinates/movement trajectory/count/size/movement speed/pressure], which helps with [writing/debugging/verification] of related scripts.</string>
<string name="error_an_error_occurred">An error occurred</string>
<string name="text_permission_management">Permission management</string>
<string name="text_service_management">Service management</string>
<string name="summary_foreground_service_inrt">The foreground service helps keep the app and scripts running more reliably in the background</string>
</resources>

View File

@@ -1,15 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running">
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory
app:layout="@layout/preference_category_custom"
android:title="@string/text_service_management">
<org.autojs.autojs.inrt.theme.preference.ForegroundServiceSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:key="@string/key_foreground_service"
android:summary="@string/summary_foreground_service_inrt"
android:title="@string/text_foreground_service" />
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory
app:layout="@layout/preference_category_custom"
android:title="@string/text_permission_management">
<org.autojs.autojs.inrt.theme.preference.PostNotificationsPermissionSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:key="@string/key_post_notifications_permission"
android:summary="@string/summary_post_notifications_permission_inrt"
android:title="@string/text_post_notifications_permission" />
<org.autojs.autojs.inrt.theme.preference.DisplayOverOtherAppsPermissionSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:key="@string/key_display_over_other_apps"
android:summary="@string/summary_display_over_other_apps_inrt"
android:title="@string/text_display_over_other_app" />
<org.autojs.autojs.inrt.theme.preference.ManageAllFilesPermissionSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:key="@string/key_all_files_access"
android:summary="@string/summary_all_files_access_inrt"
android:title="@string/text_all_files_access" />
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory
app:layout="@layout/preference_category_custom"
android:title="@string/text_script_running">
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:defaultValue="true"
android:key="@string/key_use_volume_control_running"
android:title="@string/text_use_volume_key_to_control_script_running" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:defaultValue="false"
android:key="@string/key_not_showing_main_activity"
android:summary="@string/summary_not_showing_main_activity"
@@ -17,15 +58,19 @@
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_a11y_service">
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory
app:layout="@layout/preference_category_custom"
android:title="@string/text_a11y_service">
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:defaultValue="false"
android:key="@string/key_enable_a11y_service_with_root_access"
android:summary="@string/summary_enable_a11y_service_with_root_access"
android:title="@string/text_enable_a11y_service_with_root_access_automatically" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
app:layout="@layout/preference_custom_inrt"
android:defaultValue="false"
android:key="@string/key_stable_mode"
android:summary="@string/summary_stable_mode"
@@ -33,23 +78,4 @@
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_special_permissions">
<org.autojs.autojs.inrt.theme.preference.ManageAllFilesPermissionSwitchPreference
android:key="@string/key_all_files_access"
android:summary="@string/summary_all_files_access_inrt"
android:title="@string/text_all_files_access" />
<org.autojs.autojs.inrt.theme.preference.DisplayOverOtherAppsPermissionSwitchPreference
android:key="@string/key_display_over_other_apps"
android:summary="@string/summary_display_over_other_apps_inrt"
android:title="@string/text_display_over_other_app" />
<org.autojs.autojs.inrt.theme.preference.PostNotificationsPermissionSwitchPreference
android:key="@string/key_post_notifications_permission"
android:summary="@string/summary_post_notifications_permission_inrt"
android:title="@string/text_post_notifications_permission" />
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
</PreferenceScreen>

View File

@@ -1,5 +1,5 @@
#Wed Jan 28 18:09:10 CST 2026
BUILD_TIME=1769594950154
#Wed Jan 28 21:05:38 CST 2026
BUILD_TIME=1769605538543
COMPILE_SDK_VERSION=36
IMAGE_QUANT_CMAKE_VERSION=3.22.1
IMAGE_QUANT_NDK_VERSION=26.1.10909125
@@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
TARGET_SDK_VERSION=36
TARGET_SDK_VERSION_INRT=29
VERSION_BUILD=3665
VERSION_BUILD=3666
VERSION_NAME=6.7.0 Alpha18
VSCODE_EXT_REQUIRED_VERSION=1.0.13