6.6.1 - Alpha2 - 优化 app.startActivity/startDualActivity 等方法适配性
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"وحدة Pinyin لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin))",
|
||||
"وحدة Pinyin4j لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"استعادة أكبر قدر ممكن من المعلومات الأساسية لمشاريع النصوص عند تلف ملف project.json",
|
||||
"تحويل اللغة الصينية المبسطة تلقائيًا إلى نظام بينيين (بما في ذلك الحروف متعددة النغمات) عند توليد اللواحق للأسماء في الملفات المفردة",
|
||||
"دعم الوسائط السلبية في الطرق UiSelector#findOnce و UiSelector#find",
|
||||
"تم تحسين تكيفية أساليب app.startActivity/startDualActivity",
|
||||
"دعم أشكال مختصرة إضافية لبادئات الأسماء في المصفوفات المرتبطة بعناصر الواجهة (مثل RecyclerView و Snackbar وغيرها)",
|
||||
"مزامنة أحدث كود من المصدر الرئيسي لمحرك Rhino وتكييفه مع المشروع الحالي"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"Pinyin module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin))",
|
||||
"Pinyin4j module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"Recover as much critical information as possible for script projects when project.json is corrupted",
|
||||
"Automatically convert Simplified Chinese to Pinyin (including multi-tone characters) for generated package name suffixes when packaging single files",
|
||||
"Support for negative arguments in the UiSelector#findOnce and UiSelector#find methods",
|
||||
"Enhanced adaptability of app.startActivity/startDualActivity methods",
|
||||
"UI elements and className-related selectors now support more package name prefix omission forms (e.g., RecyclerView, Snackbar, etc.)",
|
||||
"Synchronize with the latest upstream code of the Rhino engine and adapt it to the existing project"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"Módulo Pinyin para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin))",
|
||||
"Módulo Pinyin4j para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"Recuperar la mayor cantidad de información crítica posible para proyectos de scripts cuando el archivo project.json está dañado",
|
||||
"Convertir automáticamente chino simplificado a Pinyin (incluyendo caracteres con múltiples tonos) para los sufijos de nombres de paquetes generados al empaquetar archivos individuales",
|
||||
"Soporte para argumentos negativos en los métodos UiSelector#findOnce y UiSelector#find",
|
||||
"Se mejoró la adaptabilidad de los métodos app.startActivity/startDualActivity",
|
||||
"Mayor soporte para formas abreviadas de prefijos de nombres de paquetes en selectores relacionados con elementos UI y className (por ejemplo, RecyclerView, Snackbar, etc.)",
|
||||
"Sincronizar el código más reciente del upstream del motor Rhino y adaptarlo al proyecto existente"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"Module Pinyin pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin))",
|
||||
"Module Pinyin4j pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"Récupérer autant d'informations critiques que possible pour les projets de script en cas de corruption du fichier project.json",
|
||||
"Convertir automatiquement le chinois simplifié en pinyin (y compris les caractères à tons multiples) pour les suffixes de noms de paquet générés lors de l'empaquetage de fichiers uniques",
|
||||
"Soutien des arguments négatifs dans les méthodes UiSelector#findOnce et UiSelector#find",
|
||||
"Amélioration de l'adaptabilité des méthodes app.startActivity/startDualActivity",
|
||||
"Prise en charge des formes abrégées supplémentaires pour les préfixes de noms de paquet dans les sélecteurs liés aux éléments de l'interface utilisateur et aux className (par exemple RecyclerView, Snackbar, etc.)",
|
||||
"Synchroniser le code en amont le plus récent du moteur Rhino et l'adapter au projet existant"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"中国語のピンイン変換用の Pinyin モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin))",
|
||||
"中国語のピンイン変換用の Pinyin4j モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"project.json ファイルが破損した場合でも, スクリプトプロジェクトの重要な情報を可能な限り復元",
|
||||
"単一ファイルをパッケージ化する際に, 自動生成されるパッケージ名のサフィックスを簡体字中国語からピンインに変換 (多音字対応)",
|
||||
"UiSelector#findOnce と UiSelector#find メソッドで負の引数をサポート",
|
||||
"app.startActivity/startDualActivity メソッドの適応性が向上しました",
|
||||
"UI要素や className に関連するセレクターが RecyclerView や Snackbar などのパッケージ名プレフィックス省略形式にさらに対応",
|
||||
"Rhino エンジンの最新の上流コードを同期し, 既存のプロジェクトに適応させる"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"중국어 병음 변환을 위한 Pinyin 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin))",
|
||||
"중국어 병음 변환을 위한 Pinyin4j 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"project.json 파일이 손상된 경우에도 가능한 한 중요한 정보를 복원",
|
||||
"단일 파일을 패키징할 때 자동 생성된 패키지 이름 접미사를 간체자로부터 병음으로 변환 (다음 음도 지원)",
|
||||
"UiSelector#findOnce 및 UiSelector#find 메서드에서 음수 인수 지원",
|
||||
"app.startActivity/startDualActivity 메서드의 적응성이 향상되었습니다",
|
||||
"UI 요소 및 className 관련 선택자가 RecyclerView, Snackbar 등과 같은 더욱 다양한 패키지 이름 접두사 생략 형식을 지원",
|
||||
"Rhino 엔진의 최신 업스트림 코드를 동기화하고 기존 프로젝트에 맞게 조정합니다"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"Модуль Pinyin для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin))",
|
||||
"Модуль Pinyin4j для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"Максимальное восстановление ключевой информации для проектов скриптов в случае повреждения файла project.json",
|
||||
"Автоматическая конвертация упрощенного китайского в пиньинь (включая многозначные символы) для суффиксов пакетов, создаваемых при упаковке отдельных файлов",
|
||||
"Поддержка отрицательных аргументов в методах UiSelector#findOnce и UiSelector#find",
|
||||
"Улучшена адаптивность методов app.startActivity/startDualActivity",
|
||||
"Поддержка дополнительных сокращённых форм префиксов имён пакетов в селекторах, связанных с элементами UI и className (например, RecyclerView, Snackbar и т. д.)",
|
||||
"Синхронизировать последний код из официального репозитория Rhino и адаптировать его к существующему проекту"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin))",
|
||||
"pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"脚本项目识别在 project.json 损坏情况下尽可能还原关键信息",
|
||||
"打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)",
|
||||
"UiSelector#findOnce 及 UiSelector#find 方法支持负数参数",
|
||||
"app.startActivity/startDualActivity 方法增强适配性",
|
||||
"UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)",
|
||||
"同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"pinyin 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin))",
|
||||
"pinyin4j 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"腳本項目識別在 project.json 損壞情況下儘可能還原關鍵信息",
|
||||
"打包單文件時自動生成的包名後綴支持將簡體中文轉換為拼音 (支持多音字)",
|
||||
"UiSelector#findOnce 及 UiSelector#find 方法支持負數參數",
|
||||
"app.startActivity/startDualActivity 方法增強適配性",
|
||||
"UI 元素及 className 相關選擇器支持更多的包名前綴省略形式 (如 RecyclerView, Snackbar 等)",
|
||||
"同步最新的 Rhino 引擎官方上游代碼並進行必要的代碼適配"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.6.1": {
|
||||
"released_date": "2024/12/26",
|
||||
"released_date": "2024/12/27",
|
||||
"feature": [
|
||||
"pinyin 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin))",
|
||||
"pinyin4j 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))",
|
||||
@@ -20,6 +20,7 @@
|
||||
"指令碼專案識別在 project.json 損壞情況下儘可能還原關鍵資訊",
|
||||
"打包單檔案時自動生成的包名字尾支援將簡體中文轉換為拼音 (支援多音字)",
|
||||
"UiSelector#findOnce 及 UiSelector#find 方法支援負數引數",
|
||||
"app.startActivity/startDualActivity 方法增強適配性",
|
||||
"UI 元素及 className 相關選擇器支援更多的包名字首省略形式 (如 RecyclerView, Snackbar 等)",
|
||||
"同步最新的 Rhino 引擎官方上游程式碼並進行必要的程式碼適配"
|
||||
],
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `إضافة جديدة` وحدة Pinyin لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin))
|
||||
* `إضافة جديدة` وحدة Pinyin4j لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@
|
||||
* `تحسين` استعادة أكبر قدر ممكن من المعلومات الأساسية لمشاريع النصوص عند تلف ملف project.json
|
||||
* `تحسين` تحويل اللغة الصينية المبسطة تلقائيًا إلى نظام بينيين (بما في ذلك الحروف متعددة النغمات) عند توليد اللواحق للأسماء في الملفات المفردة
|
||||
* `تحسين` دعم الوسائط السلبية في الطرق UiSelector#findOnce و UiSelector#find
|
||||
* `تحسين` تم تحسين تكيفية أساليب app.startActivity/startDualActivity
|
||||
* `تحسين` دعم أشكال مختصرة إضافية لبادئات الأسماء في المصفوفات المرتبطة بعناصر الواجهة (مثل RecyclerView و Snackbar وغيرها)
|
||||
* `تحسين` مزامنة أحدث كود من المصدر الرئيسي لمحرك Rhino وتكييفه مع المشروع الحالي
|
||||
* `تحسين` تعديلات على إصدارات بعض التبعيات أو المكتبات المحلية _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (أدوات SDK) (في النافذة اليمنى)
|
||||
|
||||
يعتمد مشروع AutoJs6 على إصدار `JDK (مجموعة تطوير جافا)` بإصدار لا يقل عن `17`، ولكن يفضل الإصدار الذي لا يقل عن `19`.
|
||||
|
||||
اعتبارًا من 26 December 2024، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `23`.
|
||||
اعتبارًا من 27 December 2024، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `23`.
|
||||
|
||||
> ملاحظة: إذا كان نظام الكمبيوتر يحتوي على JDK والإصدار يفي بالمتطلبات المذكورة أعلاه، فيمكنك تخطي هذا القسم.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Compared to the final open-source version `4.1.1 Alpha2` of Auto.js, the main up
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Feature` Pinyin module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin))
|
||||
* `Feature` Pinyin4j module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ Compared to the final open-source version `4.1.1 Alpha2` of Auto.js, the main up
|
||||
* `Improvement` Recover as much critical information as possible for script projects when project.json is corrupted
|
||||
* `Improvement` Automatically convert Simplified Chinese to Pinyin (including multi-tone characters) for generated package name suffixes when packaging single files
|
||||
* `Improvement` Support for negative arguments in the UiSelector#findOnce and UiSelector#find methods
|
||||
* `Improvement` Enhanced adaptability of app.startActivity/startDualActivity methods
|
||||
* `Improvement` UI elements and className-related selectors now support more package name prefix omission forms (e.g., RecyclerView, Snackbar, etc.)
|
||||
* `Improvement` Synchronize with the latest upstream code of the Rhino engine and adapt it to the existing project
|
||||
* `Improvement` Some dependency or local library version adjustments _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ Check `Show Package Details`, click NDK and CMake respectively to ensure the cor
|
||||
|
||||
The `JDK (Java Development Kit)` version required for the AutoJs6 project should be at least `17`, but `19` or higher is recommended.
|
||||
|
||||
As of Dec 26 , 2024, AutoJs6 supports up to version `23` of the JDK.
|
||||
As of Dec 27 , 2024, AutoJs6 supports up to version `23` of the JDK.
|
||||
|
||||
> Note: If the JDK is already installed on the computer system and the version meets the above requirements, this section can be skipped.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ En comparación con la versión final de Auto.js `4.1.1 Alpha2`, AutoJs6 ha real
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Nuevo` Módulo Pinyin para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin))
|
||||
* `Nuevo` Módulo Pinyin4j para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ En comparación con la versión final de Auto.js `4.1.1 Alpha2`, AutoJs6 ha real
|
||||
* `Mejora` Recuperar la mayor cantidad de información crítica posible para proyectos de scripts cuando el archivo project.json está dañado
|
||||
* `Mejora` Convertir automáticamente chino simplificado a Pinyin (incluyendo caracteres con múltiples tonos) para los sufijos de nombres de paquetes generados al empaquetar archivos individuales
|
||||
* `Mejora` Soporte para argumentos negativos en los métodos UiSelector#findOnce y UiSelector#find
|
||||
* `Mejora` Se mejoró la adaptabilidad de los métodos app.startActivity/startDualActivity
|
||||
* `Mejora` Mayor soporte para formas abreviadas de prefijos de nombres de paquetes en selectores relacionados con elementos UI y className (por ejemplo, RecyclerView, Snackbar, etc.)
|
||||
* `Mejora` Sincronizar el código más reciente del upstream del motor Rhino y adaptarlo al proyecto existente
|
||||
* `Mejora` Ajustes en algunas dependencias o versiones de bibliotecas locales _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ Marca `Show Package Details (Mostrar detalles del paquete)`, haz clic en NDK y C
|
||||
|
||||
La versión mínima requerida del `JDK (Kit de Desarrollo de Java)` para el proyecto AutoJs6 es `17`, pero se recomienda usar una versión no inferior a `19`.
|
||||
|
||||
Hasta el 26 de December de 2024, AutoJs6 soporta hasta la versión `23` de JDK.
|
||||
Hasta el 27 de December de 2024, AutoJs6 soporta hasta la versión `23` de JDK.
|
||||
|
||||
> Nota: Si el sistema ya tiene instalado JDK y cumple con los requisitos anteriores, puedes omitir esta sección.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Par rapport à la version finale open source de Auto.js `4.1.1 Alpha2`, AutoJs6
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Fonctionnalité` Module Pinyin pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin))
|
||||
* `Fonctionnalité` Module Pinyin4j pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ Par rapport à la version finale open source de Auto.js `4.1.1 Alpha2`, AutoJs6
|
||||
* `Amélioration` Récupérer autant d'informations critiques que possible pour les projets de script en cas de corruption du fichier project.json
|
||||
* `Amélioration` Convertir automatiquement le chinois simplifié en pinyin (y compris les caractères à tons multiples) pour les suffixes de noms de paquet générés lors de l'empaquetage de fichiers uniques
|
||||
* `Amélioration` Soutien des arguments négatifs dans les méthodes UiSelector#findOnce et UiSelector#find
|
||||
* `Amélioration` Amélioration de l'adaptabilité des méthodes app.startActivity/startDualActivity
|
||||
* `Amélioration` Prise en charge des formes abrégées supplémentaires pour les préfixes de noms de paquet dans les sélecteurs liés aux éléments de l'interface utilisateur et aux className (par exemple RecyclerView, Snackbar, etc.)
|
||||
* `Amélioration` Synchroniser le code en amont le plus récent du moteur Rhino et l'adapter au projet existant
|
||||
* `Amélioration` Certaines dépendances ou versions de bibliothèques locales ont été ajustées _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ Cochez `Show Package Details (afficher les détails du package)`, puis cliquez r
|
||||
|
||||
La version de JDK (Kit de développement Java) requise pour le projet AutoJs6 doit être au moins `17`, mais il est recommandé d'avoir au moins `19`.
|
||||
|
||||
À partir du 26 December 2024, AutoJs6 prend en charge la version maximale de JDK `23`.
|
||||
À partir du 27 December 2024, AutoJs6 prend en charge la version maximale de JDK `23`.
|
||||
|
||||
> Note : Si le JDK est déjà installé sur le système informatique et que la version répond aux exigences ci-dessus, vous pouvez ignorer cette section.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Auto.js の最終オープンソースバージョン `4.1.1 Alpha2` と比較
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新機能` 中国語のピンイン変換用の Pinyin モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin))
|
||||
* `新機能` 中国語のピンイン変換用の Pinyin4j モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ Auto.js の最終オープンソースバージョン `4.1.1 Alpha2` と比較
|
||||
* `改善` project.json ファイルが破損した場合でも, スクリプトプロジェクトの重要な情報を可能な限り復元
|
||||
* `改善` 単一ファイルをパッケージ化する際に, 自動生成されるパッケージ名のサフィックスを簡体字中国語からピンインに変換 (多音字対応)
|
||||
* `改善` UiSelector#findOnce と UiSelector#find メソッドで負の引数をサポート
|
||||
* `改善` app.startActivity/startDualActivity メソッドの適応性が向上しました
|
||||
* `改善` UI要素や className に関連するセレクターが RecyclerView や Snackbar などのパッケージ名プレフィックス省略形式にさらに対応
|
||||
* `改善` Rhino エンジンの最新の上流コードを同期し, 既存のプロジェクトに適応させる
|
||||
* `改善` 一部の依存関係またはローカルライブラリのバージョン調整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK ツール) (右側のウィンドウにあります)
|
||||
|
||||
AutoJs6プロジェクトが依存する `JDK (Java開発キット)` のリリースバージョンは少なくとも `17` で、それ以下のバージョンは推奨されませんが、最低でも `19` の使用を推奨します。.
|
||||
|
||||
2024 年 12 月 26 日 現在、AutoJs6がサポートする最大のJDKバージョンは `23` です。.
|
||||
2024 年 12 月 27 日 現在、AutoJs6がサポートする最大のJDKバージョンは `23` です。.
|
||||
|
||||
> 注: コンピュータシステムに適切なバージョンのJDKがインストールされている場合、この節の内容をスキップできます。.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Auto.js 최종 오픈 소스 버전 `4.1.1 Alpha2`와 비교하여 AutoJs6는
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `추가` 중국어 병음 변환을 위한 Pinyin 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin))
|
||||
* `추가` 중국어 병음 변환을 위한 Pinyin4j 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ Auto.js 최종 오픈 소스 버전 `4.1.1 Alpha2`와 비교하여 AutoJs6는
|
||||
* `개선` project.json 파일이 손상된 경우에도 가능한 한 중요한 정보를 복원
|
||||
* `개선` 단일 파일을 패키징할 때 자동 생성된 패키지 이름 접미사를 간체자로부터 병음으로 변환 (다음 음도 지원)
|
||||
* `개선` UiSelector#findOnce 및 UiSelector#find 메서드에서 음수 인수 지원
|
||||
* `개선` app.startActivity/startDualActivity 메서드의 적응성이 향상되었습니다
|
||||
* `개선` UI 요소 및 className 관련 선택자가 RecyclerView, Snackbar 등과 같은 더욱 다양한 패키지 이름 접두사 생략 형식을 지원
|
||||
* `개선` Rhino 엔진의 최신 업스트림 코드를 동기화하고 기존 프로젝트에 맞게 조정합니다
|
||||
* `개선` 일부 의존성 또는 로컬 라이브러리 버전 조정 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK 도구) (오른쪽 창에 위치)
|
||||
|
||||
AutoJs6 프로젝트는 `JDK (Java 개발 도구 키트)` 버전이 `17` 이상이어야 하지만, `19` 이상을 권장합니다..
|
||||
|
||||
2024 년 12 월 26 일 기준으로, AutoJs6이 지원하는 최대 JDK 버전은 `23`입니다..
|
||||
2024 년 12 월 27 일 기준으로, AutoJs6이 지원하는 최대 JDK 버전은 `23`입니다..
|
||||
|
||||
> 메모: 시스템에 JDK가 설치되어 있고, 버전이 위의 요구 사항을 충족하는 경우, 이 섹션을 건너뛸 수 있습니다..
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ AutoJs6 разработан на основе финальной версии
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Новое` Модуль Pinyin для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin))
|
||||
* `Новое` Модуль Pinyin4j для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ AutoJs6 разработан на основе финальной версии
|
||||
* `Улучшение` Максимальное восстановление ключевой информации для проектов скриптов в случае повреждения файла project.json
|
||||
* `Улучшение` Автоматическая конвертация упрощенного китайского в пиньинь (включая многозначные символы) для суффиксов пакетов, создаваемых при упаковке отдельных файлов
|
||||
* `Улучшение` Поддержка отрицательных аргументов в методах UiSelector#findOnce и UiSelector#find
|
||||
* `Улучшение` Улучшена адаптивность методов app.startActivity/startDualActivity
|
||||
* `Улучшение` Поддержка дополнительных сокращённых форм префиксов имён пакетов в селекторах, связанных с элементами UI и className (например, RecyclerView, Snackbar и т. д.)
|
||||
* `Улучшение` Синхронизировать последний код из официального репозитория Rhino и адаптировать его к существующему проекту
|
||||
* `Улучшение` Изменения версий некоторых зависимостей или локальных библиотек _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK Инструменты) (находится в правом ок
|
||||
|
||||
Для проекта AutoJs6 требуется версия `JDK (Java Development Kit)` не ниже `17`, но рекомендуется не ниже `19`.
|
||||
|
||||
По состоянию на 26 December 2024 г. AutoJs6 поддерживает JDK максимальной версии `23`.
|
||||
По состоянию на 27 December 2024 г. AutoJs6 поддерживает JDK максимальной версии `23`.
|
||||
|
||||
> Примечание: Если на компьютере уже установлен JDK и версия соответствует указанным требованиям, этот раздел можно пропустить.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开
|
||||
* `优化` 脚本项目识别在 project.json 损坏情况下尽可能还原关键信息
|
||||
* `优化` 打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)
|
||||
* `优化` UiSelector#findOnce 及 UiSelector#find 方法支持负数参数
|
||||
* `优化` app.startActivity/startDualActivity 方法增强适配性
|
||||
* `优化` UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `优化` 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
|
||||
* `优化` 部分依赖或本地库版本调整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK 工具) (位于右侧窗口)
|
||||
|
||||
AutoJs6 项目依赖的 `JDK (Java 开发工具包)` 发行版本不低于 `17`, 但建议不低于 `19`.
|
||||
|
||||
截至 2024 年 12 月 26 日, AutoJs6 可支持 JDK 最高版本为 `23`.
|
||||
截至 2024 年 12 月 27 日, AutoJs6 可支持 JDK 最高版本为 `23`.
|
||||
|
||||
> 注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ AutoJs6 在 Auto.js 最終項目的基礎上, 於 `2021/12/01` 進行二次開
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ AutoJs6 在 Auto.js 最終項目的基礎上, 於 `2021/12/01` 進行二次開
|
||||
* `優化` 腳本項目識別在 project.json 損壞情況下儘可能還原關鍵信息
|
||||
* `優化` 打包單文件時自動生成的包名後綴支持將簡體中文轉換為拼音 (支持多音字)
|
||||
* `優化` UiSelector#findOnce 及 UiSelector#find 方法支持負數參數
|
||||
* `優化` app.startActivity/startDualActivity 方法增強適配性
|
||||
* `優化` UI 元素及 className 相關選擇器支持更多的包名前綴省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `優化` 同步最新的 Rhino 引擎官方上游代碼並進行必要的代碼適配
|
||||
* `優化` 部分依賴或本地庫版本調整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK 工具) (位於右側窗口)
|
||||
|
||||
AutoJs6 項目依賴的 `JDK (Java 開發工具包)` 發行版本不低於 `17`, 但建議不低於 `19`.
|
||||
|
||||
截至 2024 年 12 月 26 日, AutoJs6 可支持 JDK 最高版本為 `23`.
|
||||
截至 2024 年 12 月 27 日, AutoJs6 可支持 JDK 最高版本為 `23`.
|
||||
|
||||
> 注: 如果計算機系統已安裝 JDK 且版本滿足上述要求, 則可跳過此小節內容.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ AutoJs6 在 Auto.js 最終專案的基礎上, 於 `2021/12/01` 進行二次開
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ AutoJs6 在 Auto.js 最終專案的基礎上, 於 `2021/12/01` 進行二次開
|
||||
* `最佳化` 指令碼專案識別在 project.json 損壞情況下儘可能還原關鍵資訊
|
||||
* `最佳化` 打包單檔案時自動生成的包名字尾支援將簡體中文轉換為拼音 (支援多音字)
|
||||
* `最佳化` UiSelector#findOnce 及 UiSelector#find 方法支援負數引數
|
||||
* `最佳化` app.startActivity/startDualActivity 方法增強適配性
|
||||
* `最佳化` UI 元素及 className 相關選擇器支援更多的包名字首省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `最佳化` 同步最新的 Rhino 引擎官方上游程式碼並進行必要的程式碼適配
|
||||
* `最佳化` 部分依賴或本地庫版本調整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK 工具) (位於右側視窗)
|
||||
|
||||
AutoJs6 專案依賴的 `JDK (Java 開發工具包)` 發行版本不低於 `17`, 但建議不低於 `19`.
|
||||
|
||||
截至 2024 年 12 月 26 日, AutoJs6 可支援 JDK 最高版本為 `23`.
|
||||
截至 2024 年 12 月 27 日, AutoJs6 可支援 JDK 最高版本為 `23`.
|
||||
|
||||
> 注: 如果計算機系統已安裝 JDK 且版本滿足上述要求, 則可跳過此小節內容.
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -171,6 +171,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开
|
||||
* `优化` 脚本项目识别在 project.json 损坏情况下尽可能还原关键信息
|
||||
* `优化` 打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)
|
||||
* `优化` UiSelector#findOnce 及 UiSelector#find 方法支持负数参数
|
||||
* `优化` app.startActivity/startDualActivity 方法增强适配性
|
||||
* `优化` UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `优化` 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
|
||||
* `优化` 部分依赖或本地库版本调整 _[`CHANGELOG.md`](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/CHANGELOG.md#v661)_
|
||||
@@ -370,7 +371,7 @@ SDK Tools (SDK 工具) (位于右侧窗口)
|
||||
|
||||
AutoJs6 项目依赖的 `JDK (Java 开发工具包)` 发行版本不低于 `17`, 但建议不低于 `19`.
|
||||
|
||||
截至 2024 年 12 月 26 日, AutoJs6 可支持 JDK 最高版本为 `23`.
|
||||
截至 2024 年 12 月 27 日, AutoJs6 可支持 JDK 最高版本为 `23`.
|
||||
|
||||
> 注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `إضافة جديدة` وحدة Pinyin لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin))
|
||||
* `إضافة جديدة` وحدة Pinyin4j لتحويل النصوص الصينية إلى بينيين (راجع وثائق المشروع > [البينيين الصيني](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `تحسين` استعادة أكبر قدر ممكن من المعلومات الأساسية لمشاريع النصوص عند تلف ملف project.json
|
||||
* `تحسين` تحويل اللغة الصينية المبسطة تلقائيًا إلى نظام بينيين (بما في ذلك الحروف متعددة النغمات) عند توليد اللواحق للأسماء في الملفات المفردة
|
||||
* `تحسين` دعم الوسائط السلبية في الطرق UiSelector#findOnce و UiSelector#find
|
||||
* `تحسين` تم تحسين تكيفية أساليب app.startActivity/startDualActivity
|
||||
* `تحسين` دعم أشكال مختصرة إضافية لبادئات الأسماء في المصفوفات المرتبطة بعناصر الواجهة (مثل RecyclerView و Snackbar وغيرها)
|
||||
* `تحسين` مزامنة أحدث كود من المصدر الرئيسي لمحرك Rhino وتكييفه مع المشروع الحالي
|
||||
* `التبعيات` إضافة Pinyin4j الإصدار 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Feature` Pinyin module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin))
|
||||
* `Feature` Pinyin4j module for Chinese Pinyin conversion (Refer to Project Documentation > [Chinese Pinyin](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `Improvement` Recover as much critical information as possible for script projects when project.json is corrupted
|
||||
* `Improvement` Automatically convert Simplified Chinese to Pinyin (including multi-tone characters) for generated package name suffixes when packaging single files
|
||||
* `Improvement` Support for negative arguments in the UiSelector#findOnce and UiSelector#find methods
|
||||
* `Improvement` Enhanced adaptability of app.startActivity/startDualActivity methods
|
||||
* `Improvement` UI elements and className-related selectors now support more package name prefix omission forms (e.g., RecyclerView, Snackbar, etc.)
|
||||
* `Improvement` Synchronize with the latest upstream code of the Rhino engine and adapt it to the existing project
|
||||
* `Dependency` Added Pinyin4j version 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Nuevo` Módulo Pinyin para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin))
|
||||
* `Nuevo` Módulo Pinyin4j para la conversión de pinyin en chino (Consulte la documentación del proyecto > [Pinyin chino](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `Mejora` Recuperar la mayor cantidad de información crítica posible para proyectos de scripts cuando el archivo project.json está dañado
|
||||
* `Mejora` Convertir automáticamente chino simplificado a Pinyin (incluyendo caracteres con múltiples tonos) para los sufijos de nombres de paquetes generados al empaquetar archivos individuales
|
||||
* `Mejora` Soporte para argumentos negativos en los métodos UiSelector#findOnce y UiSelector#find
|
||||
* `Mejora` Se mejoró la adaptabilidad de los métodos app.startActivity/startDualActivity
|
||||
* `Mejora` Mayor soporte para formas abreviadas de prefijos de nombres de paquetes en selectores relacionados con elementos UI y className (por ejemplo, RecyclerView, Snackbar, etc.)
|
||||
* `Mejora` Sincronizar el código más reciente del upstream del motor Rhino y adaptarlo al proyecto existente
|
||||
* `Dependencia` Agregado Pinyin4j versión 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Fonctionnalité` Module Pinyin pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin))
|
||||
* `Fonctionnalité` Module Pinyin4j pour la conversion du pinyin chinois (Consultez la documentation du projet > [Pinyin chinois](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `Amélioration` Récupérer autant d'informations critiques que possible pour les projets de script en cas de corruption du fichier project.json
|
||||
* `Amélioration` Convertir automatiquement le chinois simplifié en pinyin (y compris les caractères à tons multiples) pour les suffixes de noms de paquet générés lors de l'empaquetage de fichiers uniques
|
||||
* `Amélioration` Soutien des arguments négatifs dans les méthodes UiSelector#findOnce et UiSelector#find
|
||||
* `Amélioration` Amélioration de l'adaptabilité des méthodes app.startActivity/startDualActivity
|
||||
* `Amélioration` Prise en charge des formes abrégées supplémentaires pour les préfixes de noms de paquet dans les sélecteurs liés aux éléments de l'interface utilisateur et aux className (par exemple RecyclerView, Snackbar, etc.)
|
||||
* `Amélioration` Synchroniser le code en amont le plus récent du moteur Rhino et l'adapter au projet existant
|
||||
* `Dépendance` Ajout de Pinyin4j version 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新機能` 中国語のピンイン変換用の Pinyin モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin))
|
||||
* `新機能` 中国語のピンイン変換用の Pinyin4j モジュール (プロジェクトドキュメントを参照 > [中国語ピンイン](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `改善` project.json ファイルが破損した場合でも, スクリプトプロジェクトの重要な情報を可能な限り復元
|
||||
* `改善` 単一ファイルをパッケージ化する際に, 自動生成されるパッケージ名のサフィックスを簡体字中国語からピンインに変換 (多音字対応)
|
||||
* `改善` UiSelector#findOnce と UiSelector#find メソッドで負の引数をサポート
|
||||
* `改善` app.startActivity/startDualActivity メソッドの適応性が向上しました
|
||||
* `改善` UI要素や className に関連するセレクターが RecyclerView や Snackbar などのパッケージ名プレフィックス省略形式にさらに対応
|
||||
* `改善` Rhino エンジンの最新の上流コードを同期し, 既存のプロジェクトに適応させる
|
||||
* `依存関係` Pinyin4j バージョン 2.5.0 を追加
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `추가` 중국어 병음 변환을 위한 Pinyin 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin))
|
||||
* `추가` 중국어 병음 변환을 위한 Pinyin4j 모듈 (프로젝트 문서 참고 > [중국어 병음](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `개선` project.json 파일이 손상된 경우에도 가능한 한 중요한 정보를 복원
|
||||
* `개선` 단일 파일을 패키징할 때 자동 생성된 패키지 이름 접미사를 간체자로부터 병음으로 변환 (다음 음도 지원)
|
||||
* `개선` UiSelector#findOnce 및 UiSelector#find 메서드에서 음수 인수 지원
|
||||
* `개선` app.startActivity/startDualActivity 메서드의 적응성이 향상되었습니다
|
||||
* `개선` UI 요소 및 className 관련 선택자가 RecyclerView, Snackbar 등과 같은 더욱 다양한 패키지 이름 접두사 생략 형식을 지원
|
||||
* `개선` Rhino 엔진의 최신 업스트림 코드를 동기화하고 기존 프로젝트에 맞게 조정합니다
|
||||
* `의존성` Pinyin4j 버전 2.5.0 추가
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `Новое` Модуль Pinyin для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin))
|
||||
* `Новое` Модуль Pinyin4j для преобразования китайского пиньиня (См. документацию проекта > [Китайский Пиньинь](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `Улучшение` Максимальное восстановление ключевой информации для проектов скриптов в случае повреждения файла project.json
|
||||
* `Улучшение` Автоматическая конвертация упрощенного китайского в пиньинь (включая многозначные символы) для суффиксов пакетов, создаваемых при упаковке отдельных файлов
|
||||
* `Улучшение` Поддержка отрицательных аргументов в методах UiSelector#findOnce и UiSelector#find
|
||||
* `Улучшение` Улучшена адаптивность методов app.startActivity/startDualActivity
|
||||
* `Улучшение` Поддержка дополнительных сокращённых форм префиксов имён пакетов в селекторах, связанных с элементами UI и className (например, RecyclerView, Snackbar и т. д.)
|
||||
* `Улучшение` Синхронизировать последний код из официального репозитория Rhino и адаптировать его к существующему проекту
|
||||
* `Зависимость` Добавлена Pinyin4j версии 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `优化` 脚本项目识别在 project.json 损坏情况下尽可能还原关键信息
|
||||
* `优化` 打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)
|
||||
* `优化` UiSelector#findOnce 及 UiSelector#find 方法支持负数参数
|
||||
* `优化` app.startActivity/startDualActivity 方法增强适配性
|
||||
* `优化` UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `优化` 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
|
||||
* `依赖` 附加 Pinyin4j 版本 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模塊, 用於漢語拼音轉換 (參閲 項目文檔 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `優化` 腳本項目識別在 project.json 損壞情況下儘可能還原關鍵信息
|
||||
* `優化` 打包單文件時自動生成的包名後綴支持將簡體中文轉換為拼音 (支持多音字)
|
||||
* `優化` UiSelector#findOnce 及 UiSelector#find 方法支持負數參數
|
||||
* `優化` app.startActivity/startDualActivity 方法增強適配性
|
||||
* `優化` UI 元素及 className 相關選擇器支持更多的包名前綴省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `優化` 同步最新的 Rhino 引擎官方上游代碼並進行必要的代碼適配
|
||||
* `依賴` 附加 Pinyin4j 版本 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模組, 用於漢語拼音轉換 (參閱 專案文件 > [漢語拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `最佳化` 指令碼專案識別在 project.json 損壞情況下儘可能還原關鍵資訊
|
||||
* `最佳化` 打包單檔案時自動生成的包名字尾支援將簡體中文轉換為拼音 (支援多音字)
|
||||
* `最佳化` UiSelector#findOnce 及 UiSelector#find 方法支援負數引數
|
||||
* `最佳化` app.startActivity/startDualActivity 方法增強適配性
|
||||
* `最佳化` UI 元素及 className 相關選擇器支援更多的包名字首省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `最佳化` 同步最新的 Rhino 引擎官方上游程式碼並進行必要的程式碼適配
|
||||
* `依賴` 附加 Pinyin4j 版本 2.5.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
# v6.6.1
|
||||
|
||||
###### 2024/12/26
|
||||
###### 2024/12/27
|
||||
|
||||
* `新增` pinyin 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin))
|
||||
* `新增` pinyin4j 模块, 用于汉语拼音转换 (参阅 项目文档 > [汉语拼音](https://docs.autojs6.com/#/pinyin4j))
|
||||
@@ -21,6 +21,7 @@
|
||||
* `优化` 脚本项目识别在 project.json 损坏情况下尽可能还原关键信息
|
||||
* `优化` 打包单文件时自动生成的包名后缀支持将简体中文转换为拼音 (支持多音字)
|
||||
* `优化` UiSelector#findOnce 及 UiSelector#find 方法支持负数参数
|
||||
* `优化` app.startActivity/startDualActivity 方法增强适配性
|
||||
* `优化` UI 元素及 className 相关选择器支持更多的包名前缀省略形式 (如 RecyclerView, Snackbar 等)
|
||||
* `优化` 同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配
|
||||
* `依赖` 附加 Pinyin4j 版本 2.5.0
|
||||
|
||||
@@ -18,11 +18,13 @@ import org.autojs.autojs.runtime.api.AppUtils.Companion.BroadcastShortForm
|
||||
import org.autojs.autojs.runtime.api.WrappedShizuku
|
||||
import org.autojs.autojs.runtime.api.augment.Augmentable
|
||||
import org.autojs.autojs.runtime.api.augment.shell.Shell
|
||||
import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException
|
||||
import org.autojs.autojs.runtime.exception.ShouldNeverHappenException
|
||||
import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException
|
||||
import org.autojs.autojs.util.RhinoUtils
|
||||
import org.autojs.autojs.util.RhinoUtils.UNDEFINED
|
||||
import org.autojs.autojs.util.RhinoUtils.coerceBoolean
|
||||
import org.autojs.autojs.util.RhinoUtils.coerceString
|
||||
import org.autojs.autojs.util.RhinoUtils.js_object_assign
|
||||
import org.autojs.autojs.util.RhinoUtils.newNativeArray
|
||||
import org.autojs.autojs.util.RhinoUtils.newNativeObject
|
||||
import org.autojs.autojs.util.RhinoUtils.undefined
|
||||
@@ -56,6 +58,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
::sendLocalBroadcastSync.name,
|
||||
::parseUri.name,
|
||||
::openUrl.name,
|
||||
::openDualUrl.name,
|
||||
::getUriForFile.name,
|
||||
::getAppByAlias.name,
|
||||
::launch.name to AS_GLOBAL,
|
||||
@@ -98,131 +101,117 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
|
||||
@JvmStatic
|
||||
@RhinoFunctionBody
|
||||
fun intentRhinoWithRuntime(scriptRuntime: ScriptRuntime, o: Any?): Intent {
|
||||
|
||||
if (o is Intent) return o
|
||||
|
||||
require(o is NativeObject) {
|
||||
"Argument for app.intent must be a JavaScript Object rather than ${o?.javaClass?.name ?: "null"}"
|
||||
}
|
||||
|
||||
val intent = Intent()
|
||||
|
||||
if (!o.prop("url").isJsNullish()) {
|
||||
o.put("data", o, parseIntentUrl(scriptRuntime, o))
|
||||
}
|
||||
|
||||
if (!o.prop("package").isJsNullish()) {
|
||||
if (o.prop("packageName").isJsNullish()) {
|
||||
o.put("packageName", o, o.prop("package"))
|
||||
}
|
||||
} else {
|
||||
if (!o.prop("packageName").isJsNullish()) {
|
||||
o.put("package", o, o.prop("packageName"))
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("packageName").isJsNullish()) {
|
||||
val k = Context.toString(o.prop("packageName"))
|
||||
if (k in presetPackageNames) {
|
||||
o.defineProp("packageName", presetPackageNames[k])
|
||||
}
|
||||
if (!o.prop("className").isJsNullish()) {
|
||||
intent.setClassName(coerceString(o.prop("packageName")), parseClassName(o))
|
||||
} else {
|
||||
// @Hint by SuperMonster003 on Jun 23, 2020.
|
||||
// ! the Intent can only match the components
|
||||
// ! in the given application package with setPackage().
|
||||
// ! Otherwise, if there's more than one app that can handle the intent,
|
||||
// ! the system presents the user with a dialog to pick which app to use.
|
||||
// ! zh-CN:
|
||||
// ! Intent 只能匹配通过 setPackage() 设置的给定应用包中的组件.
|
||||
// ! 否则, 如果有多个应用可以处理该 Intent,
|
||||
// ! 系统会向用户展示一个对话框, 让用户选择要使用哪个应用.
|
||||
intent.setPackage(coerceString(o.prop("packageName")))
|
||||
}
|
||||
}
|
||||
|
||||
if (o.prop("extras") is NativeObject) {
|
||||
(o.prop("extras") as NativeObject).entries.forEach { entry ->
|
||||
val (key, value) = entry
|
||||
RhinoUtils.putExtraForIntent(intent, key, value)
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("category").isJsNullish()) {
|
||||
if (o.prop("category") is Iterable<*>) {
|
||||
(o.prop("category") as Iterable<*>).forEach { cat ->
|
||||
intent.addCategory(Context.toString(cat))
|
||||
}
|
||||
} else {
|
||||
intent.addCategory(Context.toString(o.prop("category")))
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("action").isJsNullish()) {
|
||||
intent.setAction(parseIntentAction(o.prop("action")))
|
||||
}
|
||||
|
||||
if (!o.prop("flags").isJsNullish()) {
|
||||
intent.setFlags(parseIntentFlags(o.prop("flags")))
|
||||
}
|
||||
|
||||
if (!o.prop("type").isJsNullish()) {
|
||||
if (!o.prop("data").isJsNullish()) {
|
||||
intent.setDataAndType(parseUriRhinoWithRuntime(scriptRuntime, o.prop("data")), Context.toString(o.prop("type")))
|
||||
} else {
|
||||
intent.setType(Context.toString(o.prop("type")))
|
||||
}
|
||||
} else {
|
||||
if (!o.prop("data").isJsNullish()) {
|
||||
intent.setData(Uri.parse(Context.toString(o.prop("data"))))
|
||||
}
|
||||
}
|
||||
|
||||
return intent
|
||||
fun intentRhinoWithRuntime(scriptRuntime: ScriptRuntime, o: Any?): Intent = when (o) {
|
||||
is Intent -> o
|
||||
is NativeObject -> Intent().configure(scriptRuntime, o)
|
||||
else -> throw IllegalArgumentException("Argument for app.intent must be either an Intent or a JavaScript Object rather than ${o.jsBrief()}")
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun startActivity(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { o ->
|
||||
when (o) {
|
||||
@Suppress("HttpUrlsUsage")
|
||||
fun startActivity(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsLengthInRange(args, 1..2) { argList ->
|
||||
val (obj, options) = argList
|
||||
when (obj) {
|
||||
is String -> when {
|
||||
o.contains("://") -> {
|
||||
openUrlRhino(o)
|
||||
}
|
||||
rexWebSiteWithoutProtocol.matches(o) -> {
|
||||
@Suppress("HttpUrlsUsage")
|
||||
openUrlRhino("http://$o")
|
||||
}
|
||||
!options.isJsNullish() -> throw IllegalArgumentException("Method app.startActivity can only have one argument when argument[0] is String")
|
||||
obj.contains("://") -> openUrlRhino(obj)
|
||||
rexWebSiteWithoutProtocol.matches(obj) -> openUrlRhino("http://$obj")
|
||||
else -> runCatching {
|
||||
startActivityWithGlobalContext(Intent(globalContext, ActivityShortForm.valueOf(o.uppercase()).classType))
|
||||
startActivityWithGlobalContext(Intent(globalContext, ActivityShortForm.valueOf(obj.uppercase()).classType))
|
||||
}.getOrElse {
|
||||
when (it) {
|
||||
is WrappedIllegalArgumentException -> throw WrappedIllegalArgumentException("Activity short form $o cannot be found")
|
||||
is WrappedIllegalArgumentException -> throw WrappedIllegalArgumentException("Activity short form $obj cannot be found")
|
||||
else -> throw it
|
||||
}
|
||||
}
|
||||
}
|
||||
is Intent -> when {
|
||||
WrappedShizuku.isOperational() -> WrappedShizuku.execCommand("am start ${toIntentToShell(scriptRuntime, o)}")
|
||||
else -> startActivityWithGlobalContext(o)
|
||||
options.isJsNullish() -> startActivityWithGlobalContext(obj)
|
||||
options is NativeObject -> obj.configure(scriptRuntime, options).let { configuredIntent ->
|
||||
when {
|
||||
checkDualProperty(options) -> startDualActivity(scriptRuntime, args)
|
||||
checkRootProperty(options) && RootUtils.isRootAvailable() -> {
|
||||
val tmpIntent = configuredIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
Shell.execCommand(scriptRuntime, arrayOf("am start ${intentToShellRhino(tmpIntent)}", /* withRoot = */ true)).throwIfError()
|
||||
}
|
||||
checkShizukuProperty(options) && WrappedShizuku.isOperational() -> {
|
||||
val tmpIntent = configuredIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
WrappedShizuku.execCommand("am start ${intentToShellRhino(tmpIntent)}").throwIfError()
|
||||
}
|
||||
else -> startActivityWithGlobalContext(configuredIntent)
|
||||
}
|
||||
}
|
||||
else -> throw IllegalArgumentException("Argument[1] for app.startActivity must be a JavaScript Object when argument[0] is Intent")
|
||||
}
|
||||
is URI -> openUrlRhino(o)
|
||||
is NativeObject -> when {
|
||||
checkDualProperty(o) -> startDualActivity(scriptRuntime, args)
|
||||
checkRootProperty(o) -> Shell.execCommand(scriptRuntime, arrayOf("am start ${toIntentToShell(scriptRuntime, o)}", true)).throwIfError()
|
||||
WrappedShizuku.isOperational() -> WrappedShizuku.execCommand("am start ${toIntentToShell(scriptRuntime, o)}").throwIfError()
|
||||
else -> startActivityWithGlobalContext(scriptRuntime, o)
|
||||
is URI -> when {
|
||||
!options.isJsNullish() -> throw IllegalArgumentException("Method app.startActivity can only have one argument when argument[0] is URI")
|
||||
else -> openUrlRhino(obj)
|
||||
}
|
||||
else -> startActivityWithGlobalContext(scriptRuntime, o)
|
||||
is NativeObject -> {
|
||||
val opt = when {
|
||||
options.isJsNullish() -> obj
|
||||
options is NativeObject -> js_object_assign(js_object_assign(newNativeObject(), obj), options) as NativeObject
|
||||
else -> throw IllegalArgumentException("Argument[1] for app.startActivity must be a JavaScript Object when argument[0] is JavaScript Object")
|
||||
}
|
||||
when {
|
||||
checkDualProperty(opt) -> startDualActivity(scriptRuntime, args)
|
||||
checkRootProperty(opt) && RootUtils.isRootAvailable() -> {
|
||||
val tmpIntent = intentRhinoWithRuntime(scriptRuntime, opt).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
|
||||
Shell.execCommand(scriptRuntime, arrayOf("am start ${intentToShellRhino(tmpIntent)}", /* withRoot = */ true)).throwIfError()
|
||||
}
|
||||
checkShizukuProperty(opt) && WrappedShizuku.isOperational() -> {
|
||||
val tmpIntent = intentRhinoWithRuntime(scriptRuntime, opt).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
|
||||
val intentCommand = intentToShellRhino(tmpIntent)
|
||||
WrappedShizuku.execCommand("am start $intentCommand").throwIfError()
|
||||
}
|
||||
else -> startActivityWithGlobalContext(scriptRuntime, opt)
|
||||
}
|
||||
}
|
||||
else -> throw IllegalArgumentException("Unknown type of argument[0]: ${obj.jsBrief()}; method: app.startActivity")
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun startDualActivity(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { intent ->
|
||||
execCommandByDualUser(scriptRuntime, intent)
|
||||
@Suppress("HttpUrlsUsage")
|
||||
fun startDualActivity(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsLengthInRange(args, 1..2) { argList ->
|
||||
val (obj, options) = argList
|
||||
when (obj) {
|
||||
is String -> when {
|
||||
!options.isJsNullish() -> throw IllegalArgumentException("Method app.startDualActivity can only have one argument when argument[0] is String")
|
||||
obj.contains("://") -> openDualUrlRhino(scriptRuntime, obj)
|
||||
rexWebSiteWithoutProtocol.matches(obj) -> openDualUrlRhino(scriptRuntime, "http://$obj")
|
||||
else -> runCatching {
|
||||
startActivityForDualUser(scriptRuntime, Intent(globalContext, ActivityShortForm.valueOf(obj.uppercase()).classType))
|
||||
}.getOrElse {
|
||||
when (it) {
|
||||
is WrappedIllegalArgumentException -> throw WrappedIllegalArgumentException("Activity short form $obj cannot be found")
|
||||
else -> throw it
|
||||
}
|
||||
}
|
||||
}
|
||||
is Intent -> when {
|
||||
options.isJsNullish() -> startActivityForDualUser(scriptRuntime, obj)
|
||||
options is NativeObject -> startActivityForDualUser(scriptRuntime, obj.configure(scriptRuntime, options))
|
||||
else -> throw IllegalArgumentException("Argument[1] for app.startDualActivity must be a JavaScript Object when argument[0] is Intent")
|
||||
}
|
||||
is URI -> when {
|
||||
!options.isJsNullish() -> throw IllegalArgumentException("Method app.startDualActivity can only have one argument when argument[0] is URI")
|
||||
else -> openUrlRhino(obj)
|
||||
}
|
||||
is NativeObject -> {
|
||||
val opt = when {
|
||||
options.isJsNullish() -> obj
|
||||
options is NativeObject -> js_object_assign(js_object_assign(newNativeObject(), obj), options) as NativeObject
|
||||
else -> throw IllegalArgumentException("Argument[1] for app.startDualActivity must be a JavaScript Object when argument[0] is JavaScript Object")
|
||||
}
|
||||
startActivityForDualUser(scriptRuntime, opt)
|
||||
}
|
||||
else -> throw IllegalArgumentException("Unknown type of argument[0]: ${obj.jsBrief()}; method: app.startDualActivity")
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -383,19 +372,20 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun startService(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { o ->
|
||||
fun startService(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { o ->
|
||||
when {
|
||||
o is NativeObject && checkRootProperty(o) -> {
|
||||
@Suppress("SpellCheckingInspection")
|
||||
Shell.execCommand(scriptRuntime, arrayOf(/* cmd = */ "am startservice ${intentToShellRhino(o)}", /* withRoot = */ 1))
|
||||
Shell.execCommand(scriptRuntime, arrayOf(/* cmd = */ "am startservice ${intentToShellRhino(o)}", /* withRoot = */ true))
|
||||
}
|
||||
else -> globalContext.startService(intentRhinoWithRuntime(scriptRuntime, o))
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun sendEmail(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { options ->
|
||||
fun sendEmail(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { options ->
|
||||
val optionsMap = options as? NativeObject ?: newNativeObject()
|
||||
|
||||
val emailIntent = Intent(Intent.ACTION_SEND).apply {
|
||||
@@ -422,11 +412,13 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
}
|
||||
|
||||
startActivityWithGlobalContext(Intent.createChooser(emailIntent, "Send Email"))
|
||||
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun sendBroadcast(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { o ->
|
||||
fun sendBroadcast(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { o ->
|
||||
when (o) {
|
||||
is String -> {
|
||||
runCatching {
|
||||
@@ -443,11 +435,12 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
}
|
||||
else -> when {
|
||||
o is NativeObject && checkRootProperty(o) -> {
|
||||
Shell.execCommand(scriptRuntime, arrayOf("am broadcast ${intentToShellRhino(o)}", 1))
|
||||
Shell.execCommand(scriptRuntime, arrayOf("am broadcast ${intentToShellRhino(o)}", /* withRoot = */ true))
|
||||
}
|
||||
else -> globalContext.sendBroadcast(intentRhinoWithRuntime(scriptRuntime, o))
|
||||
}
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -490,10 +483,20 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
openUrlRhino(it)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun openDualUrl(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) {
|
||||
openDualUrlRhino(scriptRuntime, it)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoFunctionBody
|
||||
fun openUrlRhino(url: Any?) = undefined { openUrlInternal(coerceString(url)) }
|
||||
|
||||
@JvmStatic
|
||||
@RhinoFunctionBody
|
||||
fun openDualUrlRhino(scriptRuntime: ScriptRuntime, url: Any?) = undefined { openDualUrlInternal(scriptRuntime, coerceString(url)) }
|
||||
|
||||
@Suppress("HttpUrlsUsage")
|
||||
fun openUrlInternal(url: String) {
|
||||
val prefix = "http://".takeUnless { url.contains("://") } ?: ""
|
||||
@@ -503,6 +506,15 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
.let { globalContext.startActivity(it) }
|
||||
}
|
||||
|
||||
@Suppress("HttpUrlsUsage")
|
||||
private fun openDualUrlInternal(scriptRuntime: ScriptRuntime, url: String) {
|
||||
val prefix = "http://".takeUnless { url.contains("://") } ?: ""
|
||||
Intent(Intent.ACTION_VIEW)
|
||||
.setData(Uri.parse(prefix + url))
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.let { startActivityForDualUser(scriptRuntime, it) }
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun getUriForFile(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Uri? = ensureArgumentsOnlyOne(args) { o ->
|
||||
@@ -559,7 +571,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
o is PresetApp -> launchDualPackageInternal(scriptRuntime, o.packageName)
|
||||
else -> launchDualPackageInternal(scriptRuntime, getAppByAliasRhino(o)?.packageName ?: Context.toString(o))
|
||||
}
|
||||
}.isSuccess
|
||||
}.getOrElse { false }
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -588,7 +600,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
launchDualPackageInternal(scriptRuntime, it.packageName)
|
||||
} ?: launchDualAppInternal(scriptRuntime, Context.toString(o))
|
||||
}
|
||||
}.isSuccess
|
||||
}.getOrElse { false }
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -656,7 +668,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun uninstall(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { o ->
|
||||
fun uninstall(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { o ->
|
||||
when {
|
||||
o.isJsNullish() -> Unit
|
||||
o is PresetApp -> scriptRuntime.app.uninstall(o.packageName)
|
||||
@@ -664,11 +676,12 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
scriptRuntime.app.uninstall(it.packageName)
|
||||
} ?: scriptRuntime.app.uninstall(Context.toString(o))
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun uninstallDual(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsOnlyOne(args) { o ->
|
||||
fun uninstallDual(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { o ->
|
||||
when {
|
||||
o.isJsNullish() -> Unit
|
||||
o is PresetApp -> uninstallDualInternal(scriptRuntime, o.packageName)
|
||||
@@ -676,6 +689,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
uninstallDualInternal(scriptRuntime, it.packageName)
|
||||
} ?: uninstallDualInternal(scriptRuntime, Context.toString(o))
|
||||
}
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
// TODO by SuperMonster003 on May 23, 2024.
|
||||
@@ -728,10 +742,10 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
val packageName = getPackageName(scriptRuntime, argList) ?: return@ensureArgumentsLength false
|
||||
val command = "am force-stop $packageName"
|
||||
when {
|
||||
RootUtils.isRootAvailable() -> Shell.execCommand(scriptRuntime, arrayOf(command, true)).code == 0
|
||||
WrappedShizuku.isOperational() -> WrappedShizuku.execCommand(command).code == 0
|
||||
else -> Shell.execCommand(scriptRuntime, arrayOf(command, false)).code == 0
|
||||
}
|
||||
RootUtils.isRootAvailable() -> Shell.execCommand(scriptRuntime, arrayOf(command, /* withRoot = */ true))
|
||||
WrappedShizuku.isOperational() -> WrappedShizuku.execCommand(command)
|
||||
else -> Shell.execCommand(scriptRuntime, arrayOf(command, /* withRoot = */ false))
|
||||
}.code == 0
|
||||
}
|
||||
|
||||
// @Hint by SuperMonster003 on Oct 30, 2024.
|
||||
@@ -743,7 +757,7 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
fun killDual(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Boolean = ensureArgumentsLength(args, 1) { argList ->
|
||||
val packageName = getPackageName(scriptRuntime, argList) ?: return@ensureArgumentsLength false
|
||||
val command = "am force-stop $packageName"
|
||||
runCatching { execCommandByDualUser(scriptRuntime, command, RootUtils.isRootAvailable()) }.isSuccess
|
||||
runCatching { execCommandForDualUser(scriptRuntime, command, RootUtils.isRootAvailable(), WrappedShizuku.isOperational()) }.isSuccess
|
||||
}
|
||||
|
||||
private fun parseClassName(o: NativeObject): String {
|
||||
@@ -761,11 +775,18 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
|
||||
private fun parseIntentFlags(flags: Any?): Int {
|
||||
|
||||
fun parse(o: Any?) =
|
||||
fun parse(o: Any?): Int =
|
||||
when (o) {
|
||||
is String -> Intent::class.java.fields
|
||||
.firstOrNull { it.name == "FLAG_${o.uppercase()}" }
|
||||
?.getInt(null)
|
||||
is String -> {
|
||||
if (o.contains("|")) {
|
||||
o.split(Regex("\\s*\\|\\s*")).map(::parse).fold(0) { a, b -> a or b }
|
||||
} else {
|
||||
Intent::class.java.fields.firstOrNull {
|
||||
val sanitizedInputRegex = Regex.escape(o.replace(Regex("\\W"), "_"))
|
||||
it.name.matches(Regex("(flag_)?(activity_)?$sanitizedInputRegex(_task)?", RegexOption.IGNORE_CASE))
|
||||
}?.getInt(null)
|
||||
}
|
||||
}
|
||||
is Number -> o.toInt()
|
||||
else -> null
|
||||
} ?: throw WrappedIllegalArgumentException("Invalid flags: $o")
|
||||
@@ -830,21 +851,20 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
globalContext.startActivity(o.apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
||||
}
|
||||
|
||||
private fun toIntentToShell(scriptRuntime: ScriptRuntime, intent: Any?) = intentToShellRhino(intentRhinoWithRuntime(scriptRuntime, intent))
|
||||
|
||||
private fun execCommandByDualUser(scriptRuntime: ScriptRuntime, intent: Any?) {
|
||||
executeCommandForDualUser(scriptRuntime, { userIdentifier ->
|
||||
"am start ${toIntentToShell(scriptRuntime, intent)} --user $userIdentifier"
|
||||
}, intent is NativeObject && checkRootProperty(intent))
|
||||
private fun startActivityForDualUser(scriptRuntime: ScriptRuntime, o: Any?) {
|
||||
val intent = intentRhinoWithRuntime(scriptRuntime, o).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
|
||||
val command = "am start ${intentToShellRhino(intent)}"
|
||||
when (o) {
|
||||
is NativeObject -> {
|
||||
val withRoot = o.inquire("root", ::coerceBoolean, true)
|
||||
val withShizuku = o.inquire("shizuku", ::coerceBoolean, true)
|
||||
execCommandForDualUser(scriptRuntime, command, withRoot, withShizuku)
|
||||
}
|
||||
else -> execCommandForDualUser(scriptRuntime, command)
|
||||
}
|
||||
}
|
||||
|
||||
private fun execCommandByDualUser(scriptRuntime: ScriptRuntime, command: String, withRoot: Boolean) {
|
||||
executeCommandForDualUser(scriptRuntime, { userIdentifier ->
|
||||
"$command --user $userIdentifier"
|
||||
}, withRoot)
|
||||
}
|
||||
|
||||
private fun executeCommandForDualUser(scriptRuntime: ScriptRuntime, commandSupplier: (Int) -> String, withRoot: Boolean) {
|
||||
private fun execCommandForDualUser(scriptRuntime: ScriptRuntime, command: String, withRoot: Boolean = true, withShizuku: Boolean = true) {
|
||||
val userManager = globalContext.getSystemService(Class.forName("android.os.UserManager"))
|
||||
|
||||
val getUserProfilesMethod = userManager.javaClass.getDeclaredMethod("getUserProfiles")
|
||||
@@ -861,11 +881,11 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
for (userHandle in userProfiles) {
|
||||
val currentUserIdentifier = getIdentifierMethod.invoke(userHandle) as Int
|
||||
if (currentUserIdentifier != processUserIdentifier) {
|
||||
val command = commandSupplier(currentUserIdentifier)
|
||||
val niceCommand = "$command --user $currentUserIdentifier"
|
||||
when {
|
||||
withRoot -> Shell.execCommand(scriptRuntime, arrayOf(command, 1))
|
||||
WrappedShizuku.isOperational() -> WrappedShizuku.execCommand(command)
|
||||
else -> Shell.execCommand(scriptRuntime, arrayOf(command, 0))
|
||||
withRoot && RootUtils.isRootAvailable() -> Shell.execCommand(scriptRuntime, arrayOf(niceCommand, /* withRoot = */ true))
|
||||
withShizuku && WrappedShizuku.isOperational() -> WrappedShizuku.execCommand(niceCommand)
|
||||
else -> Shell.execCommand(scriptRuntime, arrayOf(niceCommand, /* withRoot = */ false))
|
||||
}.throwIfError()
|
||||
}
|
||||
}
|
||||
@@ -875,32 +895,113 @@ class App(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
return o?.let { PresetApp.getAppByAlias(Context.toString(it)) }
|
||||
}
|
||||
|
||||
private fun launchDualPackageInternal(scriptRuntime: ScriptRuntime, o: String) {
|
||||
private fun launchDualPackageInternal(scriptRuntime: ScriptRuntime, o: String): Boolean {
|
||||
val nicePackageName = getAppByAlias(scriptRuntime, arrayOf(o))?.packageName ?: (/* packageName = */ o)
|
||||
val intent = globalContext.packageManager.getLaunchIntentForPackage(nicePackageName) ?: return
|
||||
execCommandByDualUser(scriptRuntime, intent)
|
||||
val intent = globalContext.packageManager.getLaunchIntentForPackage(nicePackageName) ?: return false
|
||||
startActivityForDualUser(scriptRuntime, intent)
|
||||
return true
|
||||
}
|
||||
|
||||
private fun launchDualAppInternal(scriptRuntime: ScriptRuntime, packageName: String) {
|
||||
getPackageName(scriptRuntime, arrayOf(packageName))?.let { launchDualPackageInternal(scriptRuntime, it) } ?: false
|
||||
private fun launchDualAppInternal(scriptRuntime: ScriptRuntime, packageName: String): Boolean {
|
||||
return getPackageName(scriptRuntime, arrayOf(packageName))?.let { launchDualPackageInternal(scriptRuntime, it) } ?: false
|
||||
}
|
||||
|
||||
private fun launchDualSettingsInternal(scriptRuntime: ScriptRuntime, packageName: String) {
|
||||
execCommandByDualUser(scriptRuntime, Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
|
||||
addCategory(Intent.CATEGORY_DEFAULT)
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
startActivityForDualUser(scriptRuntime, Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
|
||||
data = Uri.parse("package:$packageName")
|
||||
})
|
||||
}
|
||||
|
||||
private fun uninstallDualInternal(scriptRuntime: ScriptRuntime, packageName: String) {
|
||||
execCommandByDualUser(scriptRuntime, Intent(Intent.ACTION_DELETE, Uri.parse("package:$packageName")))
|
||||
startActivityForDualUser(scriptRuntime, Intent(Intent.ACTION_DELETE).apply {
|
||||
data = Uri.parse("package:$packageName")
|
||||
})
|
||||
}
|
||||
|
||||
private fun checkRootProperty(o: NativeObject) = o.inquire("root", ::coerceBoolean, false)
|
||||
|
||||
private fun checkShizukuProperty(o: NativeObject) = o.inquire("shizuku", ::coerceBoolean, false) && WrappedShizuku.isOperational()
|
||||
|
||||
private fun checkDualProperty(o: NativeObject) = o.inquire("dual", ::coerceBoolean, false)
|
||||
|
||||
private fun Intent.configure(scriptRuntime: ScriptRuntime, o: NativeObject): Intent {
|
||||
val intent = this
|
||||
|
||||
if (!o.prop("url").isJsNullish()) {
|
||||
o.put("data", o, parseIntentUrl(scriptRuntime, o))
|
||||
}
|
||||
|
||||
if (!o.prop("package").isJsNullish()) {
|
||||
if (o.prop("packageName").isJsNullish()) {
|
||||
o.put("packageName", o, o.prop("package"))
|
||||
}
|
||||
} else {
|
||||
if (!o.prop("packageName").isJsNullish()) {
|
||||
o.put("package", o, o.prop("packageName"))
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("packageName").isJsNullish()) {
|
||||
val k = Context.toString(o.prop("packageName"))
|
||||
if (k in presetPackageNames) {
|
||||
o.defineProp("packageName", presetPackageNames[k])
|
||||
}
|
||||
if (!o.prop("className").isJsNullish()) {
|
||||
intent.setClassName(coerceString(o.prop("packageName")), parseClassName(o))
|
||||
} else {
|
||||
// @Hint by SuperMonster003 on Jun 23, 2020.
|
||||
// ! the Intent can only match the components
|
||||
// ! in the given application package with setPackage().
|
||||
// ! Otherwise, if there's more than one app that can handle the intent,
|
||||
// ! the system presents the user with a dialog to pick which app to use.
|
||||
// ! zh-CN:
|
||||
// ! Intent 只能匹配通过 setPackage() 设置的给定应用包中的组件.
|
||||
// ! 否则, 如果有多个应用可以处理该 Intent,
|
||||
// ! 系统会向用户展示一个对话框, 让用户选择要使用哪个应用.
|
||||
intent.setPackage(coerceString(o.prop("packageName")))
|
||||
}
|
||||
}
|
||||
|
||||
if (o.prop("extras") is NativeObject) {
|
||||
(o.prop("extras") as NativeObject).entries.forEach { entry ->
|
||||
val (key, value) = entry
|
||||
RhinoUtils.putExtraForIntent(intent, key, value)
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("category").isJsNullish()) {
|
||||
if (o.prop("category") is Iterable<*>) {
|
||||
(o.prop("category") as Iterable<*>).forEach { cat ->
|
||||
intent.addCategory(Context.toString(cat))
|
||||
}
|
||||
} else {
|
||||
intent.addCategory(Context.toString(o.prop("category")))
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.prop("action").isJsNullish()) {
|
||||
intent.setAction(parseIntentAction(o.prop("action")))
|
||||
}
|
||||
|
||||
if (!o.prop("flags").isJsNullish()) {
|
||||
intent.setFlags(parseIntentFlags(o.prop("flags")))
|
||||
}
|
||||
|
||||
if (!o.prop("type").isJsNullish()) {
|
||||
if (!o.prop("data").isJsNullish()) {
|
||||
intent.setDataAndType(parseUriRhinoWithRuntime(scriptRuntime, o.prop("data")), Context.toString(o.prop("type")))
|
||||
} else {
|
||||
intent.setType(Context.toString(o.prop("type")))
|
||||
}
|
||||
} else {
|
||||
if (!o.prop("data").isJsNullish()) {
|
||||
intent.setData(Uri.parse(Context.toString(o.prop("data"))))
|
||||
}
|
||||
}
|
||||
|
||||
return intent
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,11 +7,13 @@ import org.autojs.autojs.extension.FlexibleArray
|
||||
import org.autojs.autojs.runtime.ScriptRuntime
|
||||
import org.autojs.autojs.runtime.api.augment.Augmentable
|
||||
import org.autojs.autojs.runtime.exception.ShouldNeverHappenException
|
||||
import org.autojs.autojs.util.RhinoUtils.UNDEFINED
|
||||
import org.autojs.autojs.util.RhinoUtils.coerceFunction
|
||||
import org.autojs.autojs.util.RhinoUtils.coerceLongNumber
|
||||
import org.autojs.autojs.util.RhinoUtils.coerceNumber
|
||||
import org.autojs.autojs6.R
|
||||
import org.mozilla.javascript.BaseFunction
|
||||
import org.mozilla.javascript.Undefined
|
||||
|
||||
@Suppress("unused", "UNUSED_PARAMETER")
|
||||
open class Timers(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
@@ -89,10 +91,11 @@ open class Timers(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
|
||||
|
||||
@JvmStatic
|
||||
@RhinoRuntimeFunctionInterface
|
||||
fun loop(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Unit = ensureArgumentsIsEmpty(args) {
|
||||
fun loop(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsIsEmpty(args) {
|
||||
AutoJs.instance.globalConsole.warn("")
|
||||
AutoJs.instance.globalConsole.warn(AutoJs.instance.applicationContext.getString(R.string.error_abandoned_method, "loop"))
|
||||
AutoJs.instance.globalConsole.warn("")
|
||||
UNDEFINED
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#Thu Dec 26 16:05:49 CST 2024
|
||||
BUILD_TIME=1735200349007
|
||||
#Fri Dec 27 19:33:23 CST 2024
|
||||
BUILD_TIME=1735299203014
|
||||
COMPILE_SDK_VERSION=34
|
||||
JAVA_VERSION=23
|
||||
JAVA_VERSION_MIN_RADICAL=0
|
||||
@@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
|
||||
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
||||
TARGET_SDK_VERSION=34
|
||||
TARGET_SDK_VERSION_INRT=29
|
||||
VERSION_BUILD=2926
|
||||
VERSION_BUILD=2929
|
||||
VERSION_NAME=6.6.1 Alpha2
|
||||
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
||||
|
||||
Reference in New Issue
Block a user