fix hyb1996-guest/AutoJsIssueReport#1341 and replace JavaAdapter to ProxyObject in ui module to avoid compilation to class file

This commit is contained in:
hyb1996 committed 2017-05-17 14:48:28 +08:00
1 parent c4ec951a10
commit b3fad201f7
70 files changed
+366 -289

No files matched your search

+2 -2
View File
@@ -9,8 +9,8 @@ android {
applicationId "com.stardust.scriptdroid" applicationId "com.stardust.scriptdroid"
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 23 targetSdkVersion 23
versionCode 130 versionCode 132
versionName "2.0.11 Alpha" versionName "2.0.11 Alpha3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
ndk { ndk {
+1 -1
View File
@@ -90,7 +90,7 @@
android:theme="@style/IssueReporterTheme"/> android:theme="@style/IssueReporterTheme"/>
<service android:name="com.stardust.scriptdroid.external.ScriptExecutionIntentService"/> <service android:name="com.stardust.scriptdroid.external.ScriptExecutionIntentService"/>
<service android:name="com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService"/> <service android:name="com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService"/>
<activity android:name=".external.tasker.TaskPrefEditActivity"/> <activity android:name=".external.tasker.TaskPrefEditActivity"/>
Whitespace-only changes.
-56
View File
@@ -1,56 +0,0 @@
bg
w
h
margin
marginLeft
margin*
padding
padding*
layout_gravity="center"
gravity
weight
var ui = {
};
ui.layout = function(xml){
}
ui.layout(
<linear orientation="vertical" w="fill" h="300" bg="#ff0000" gravity="center" layout_gravity="center">
<text text="测试" size="18" color="#000000" id="adasd"/>
<button id="btn" text="按钮"/>
</linear>
);
vat text = ui.asadsad;
<relative>
</relative>
<horizon>
</horizon>
<vertical>
</vertical>
function ui(){
}
module.exports = ui;
@@ -5,7 +5,7 @@ sleep(2000);
while(true){ while(true){
if(currentPackage() == 'com.tencent.mobileqq'){ if(currentPackage() == 'com.tencent.mobileqq'){
swipe(600, 700, 600, 1400, 400); swipe(600, 900, 600, 1400, 400);
} }
sleep(300); sleep(300);
} }
@@ -0,0 +1,33 @@
"auto";
setScreenMetrics(1080, 1920);
launchApp("QQ");
sleep(1500);
click(891, 1851);
sleep(1000);
//点击好友动态
click(192, 453);
sleep(1000);
//点击头像
click(155, 638);
sleep(1000);
//点击留言
click(747, 775);
sleep(1000);
while(true){
if(currentPackage() == 'com.tencent.mobileqq'){
//点击箭头图标
click(1029, 433);
sleep(300);
//点击删除
click(530, 820);
sleep(300);
//点击确定
click(331, 1122);
sleep(200);
}
sleep(200);
}
@@ -0,0 +1,27 @@
"auto";
setScreenMetrics(1080, 1920);
launchApp("QQ");
sleep(1500);
//点击动态图标
Tap(891, 1851);
//点击好友动态
Tap(192, 453);
//点击头像
Tap(155, 638);
//点击留言
Tap(747, 775);
while(true){
if(currentPackage() == 'com.tencent.mobileqq'){
//点击箭头图标
Tap(1029, 433);
//点击删除
Tap(530, 820);
//点击确定
Tap(331, 1122);
}
sleep(200);
}
@@ -1,20 +0,0 @@
SetScreenMetrics(1080, 1920);
launchApp("QQ");
//点击动态图标
Tap(891, 1851);
//点击好友动态
Tap(192, 453);
//点击头像
Tap(155, 638);
//点击留言
Tap(747, 775);
while(true){
//点击箭头图标
Tap(1029, 433);
//点击删除
Tap(530, 820);
//点击确定
Tap(331, 1122);
}
@@ -1,20 +1,14 @@
package com.stardust.scriptdroid; package com.stardust.scriptdroid;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Keep;
import android.support.multidex.MultiDexApplication; import android.support.multidex.MultiDexApplication;
import android.util.Log;
import android.widget.Toast;
import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.LeakCanary;
import com.stardust.app.SimpleActivityLifecycleCallbacks; import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.app.VolumeChangeObserver; import com.stardust.app.VolumeChangeObserver;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.OverlayPermissionChecker;
import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
import com.stardust.scriptdroid.statics.ScriptStatics; import com.stardust.scriptdroid.statics.ScriptStatics;
import com.stardust.scriptdroid.tool.CrashHandler; import com.stardust.scriptdroid.tool.CrashHandler;
import com.stardust.scriptdroid.tool.JsBeautifierFactory; import com.stardust.scriptdroid.tool.JsBeautifierFactory;
@@ -23,9 +17,6 @@ import com.stardust.theme.ThemeColor;
import com.stardust.theme.ThemeColorManager; import com.stardust.theme.ThemeColorManager;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
/** /**
@@ -18,6 +18,7 @@ public class Pref {
private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE); private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE);
private static final String KEY_SERVER_ADDRESS = "Still love you...17.5.14"; private static final String KEY_SERVER_ADDRESS = "Still love you...17.5.14";
private static final String KEY_SHOULD_SHOW_ANNUNCIATION = "Sing about all the things you forgot, things you are not";
private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
@@ -124,4 +125,8 @@ public class Pref {
public static void saveServerAddress(String address) { public static void saveServerAddress(String address) {
def().edit().putString(KEY_SERVER_ADDRESS, address).apply(); def().edit().putString(KEY_SERVER_ADDRESS, address).apply();
} }
public static boolean shouldShowAnnunciation() {
return getDisposableBoolean(KEY_SHOULD_SHOW_ANNUNCIATION, true);
}
} }
@@ -24,8 +24,8 @@ import com.stardust.scriptdroid.ui.console.StardustConsole;
import com.stardust.util.Supplier; import com.stardust.util.Supplier;
import com.stardust.util.UiHandler; import com.stardust.util.UiHandler;
import com.stardust.view.accessibility.AccessibilityInfoProvider; import com.stardust.view.accessibility.AccessibilityInfoProvider;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.LayoutInspector; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.LayoutInspector;
import com.stardust.scriptdroid.external.floating_window.menu.record.accessibility.AccessibilityActionRecorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.accessibility.AccessibilityActionRecorder;
import com.stardust.scriptdroid.service.AccessibilityWatchDogService; import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.ui.console.JraskaConsole; import com.stardust.scriptdroid.ui.console.JraskaConsole;
@@ -1,12 +0,0 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo;
/**
* Created by Stardust on 2017/3/10.
*/
public interface OnNodeInfoSelectListener {
void onNodeSelect(NodeInfo info);
}
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window; package com.stardust.scriptdroid.external.floatingwindow;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -12,7 +12,7 @@ import android.widget.Toast;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.util.IntentUtil; import com.stardust.util.IntentUtil;
/** /**
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window; package com.stardust.scriptdroid.external.floatingwindow;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu; package com.stardust.scriptdroid.external.floatingwindow.menu;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
@@ -18,9 +18,9 @@ import android.util.TypedValue;
import android.view.View; import android.view.View;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.content.MainMenuNavigatorContent; import com.stardust.scriptdroid.external.floatingwindow.menu.content.MainMenuNavigatorContent;
import com.stardust.scriptdroid.external.floating_window.menu.content.RecordNavigatorContent; import com.stardust.scriptdroid.external.floatingwindow.menu.content.RecordNavigatorContent;
import com.stardust.scriptdroid.external.floating_window.menu.content.ScriptListNavigatorContent; import com.stardust.scriptdroid.external.floatingwindow.menu.content.ScriptListNavigatorContent;
import com.stardust.theme.ThemeColorManagerCompat; import com.stardust.theme.ThemeColorManagerCompat;
import java.util.ArrayList; import java.util.ArrayList;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu; package com.stardust.scriptdroid.external.floatingwindow.menu;
import android.app.Service; import android.app.Service;
@@ -17,9 +17,9 @@ import com.stardust.hover.SimpleHoverMenuTransitionListener;
import com.stardust.hover.WindowHoverMenu; import com.stardust.hover.WindowHoverMenu;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.external.floating_window.menu.view.FloatingLayoutBoundsView; import com.stardust.scriptdroid.external.floatingwindow.menu.view.FloatingLayoutBoundsView;
import com.stardust.scriptdroid.external.floating_window.menu.view.FloatingLayoutHierarchyView; import com.stardust.scriptdroid.external.floatingwindow.menu.view.FloatingLayoutHierarchyView;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.theme.ThemeColorManagerCompat; import com.stardust.theme.ThemeColorManagerCompat;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.content; package com.stardust.scriptdroid.external.floatingwindow.menu.content;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
@@ -11,8 +11,8 @@ import android.widget.Toast;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.LayoutInspector; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.LayoutInspector;
import com.stardust.util.ClipboardUtil; import com.stardust.util.ClipboardUtil;
import com.stardust.scriptdroid.ui.main.MainActivity; import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.content; package com.stardust.scriptdroid.external.floatingwindow.menu.content;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -14,11 +14,11 @@ import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.accessibility.AccessibilityEventHelper; import com.stardust.scriptdroid.accessibility.AccessibilityEventHelper;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.Recorder;
import com.stardust.scriptdroid.external.floating_window.menu.record.accessibility.AccessibilityActionRecorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.accessibility.AccessibilityActionRecorder;
import com.stardust.scriptdroid.external.floating_window.menu.record.inputevent.KeyObserver; import com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent.KeyObserver;
import com.stardust.scriptdroid.external.floating_window.menu.record.inputevent.TouchRecorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent.TouchRecorder;
import com.stardust.scriptdroid.ui.main.MainActivity; import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
import com.stardust.view.ViewBinder; import com.stardust.view.ViewBinder;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.content; package com.stardust.scriptdroid.external.floatingwindow.menu.content;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -7,10 +7,8 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.stardust.autojs.script.FileScriptSource;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService;
import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.Scripts; import com.stardust.scriptdroid.script.Scripts;
import com.stardust.scriptdroid.script.StorageScriptProvider; import com.stardust.scriptdroid.script.StorageScriptProvider;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector;
import android.graphics.Rect; import android.graphics.Rect;
import android.support.annotation.Keep; import android.support.annotation.Keep;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
@@ -12,7 +12,7 @@ import android.util.AttributeSet;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.util.ViewUtil; import com.stardust.util.ViewUtil;
import java.util.ArrayList; import java.util.ArrayList;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
@@ -14,7 +14,7 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.util.ViewUtil; import com.stardust.util.ViewUtil;
import com.stardust.widget.LevelBeamView; import com.stardust.widget.LevelBeamView;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
@@ -13,7 +13,7 @@ import android.widget.FrameLayout;
import android.widget.ViewSwitcher; import android.widget.ViewSwitcher;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
/** /**
* Created by Stardust on 2017/3/10. * Created by Stardust on 2017/3/10.
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view; package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
@@ -10,7 +10,7 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.util.ClipboardUtil; import com.stardust.util.ClipboardUtil;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@@ -0,0 +1,12 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view;
import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
/**
* Created by Stardust on 2017/3/10.
*/
public interface OnNodeInfoSelectListener {
void onNodeSelect(NodeInfo info);
}
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record; package com.stardust.scriptdroid.external.floatingwindow.menu.record;
import java.util.Arrays; import java.util.Arrays;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.accessibility; package com.stardust.scriptdroid.external.floatingwindow.menu.record.accessibility;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.os.Build; import android.os.Build;
@@ -8,7 +8,7 @@ import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.automator.UiObject; import com.stardust.automator.UiObject;
import com.stardust.automator.simple_action.FilterAction; import com.stardust.automator.simple_action.FilterAction;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.util.SparseArrayEntries; import com.stardust.util.SparseArrayEntries;
import com.stardust.view.accessibility.AccessibilityNodeInfoHelper; import com.stardust.view.accessibility.AccessibilityNodeInfoHelper;
@@ -1,9 +1,9 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.accessibility; package com.stardust.scriptdroid.external.floatingwindow.menu.record.accessibility;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.Recorder;
import com.stardust.view.accessibility.AccessibilityDelegate; import com.stardust.view.accessibility.AccessibilityDelegate;
import java.util.Arrays; import java.util.Arrays;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
/** /**
* Created by Stardust on 2017/3/7. * Created by Stardust on 2017/3/7.
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
@@ -7,7 +7,7 @@ import android.widget.Toast;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.Recorder;
import com.stardust.util.MapEntries; import com.stardust.util.MapEntries;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -1,7 +1,7 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import com.stardust.scriptdroid.autojs.api.Shell; import com.stardust.scriptdroid.autojs.api.Shell;
import com.stardust.scriptdroid.external.floating_window.menu.record.Recorder; import com.stardust.scriptdroid.external.floatingwindow.menu.record.Recorder;
/** /**
* Created by Stardust on 2017/3/6. * Created by Stardust on 2017/3/6.
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.record.inputevent; package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
/** /**
* Created by Stardust on 2017/3/16. * Created by Stardust on 2017/3/16.
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.view; package com.stardust.scriptdroid.external.floatingwindow.menu.view;
import android.content.Context; import android.content.Context;
import android.view.KeyEvent; import android.view.KeyEvent;
@@ -6,11 +6,11 @@ import android.view.WindowManager;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme; import com.afollestad.materialdialogs.Theme;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.LayoutBoundsView; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.LayoutBoundsView;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.NodeInfoView; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.NodeInfoView;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.OnNodeInfoSelectListener; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.OnNodeInfoSelectListener;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
/** /**
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.external.floating_window.menu.view; package com.stardust.scriptdroid.external.floatingwindow.menu.view;
import android.content.Context; import android.content.Context;
import android.view.KeyEvent; import android.view.KeyEvent;
@@ -6,11 +6,11 @@ import android.view.WindowManager;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme; import com.afollestad.materialdialogs.Theme;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.NodeInfo; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.NodeInfo;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.LayoutHierarchyView; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.LayoutHierarchyView;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.NodeInfoView; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.NodeInfoView;
import com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.OnNodeInfoSelectListener; import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.OnNodeInfoSelectListener;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
/** /**
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.sublime_plugin_client; package com.stardust.scriptdroid.sublime;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.sublime_plugin_client; package com.stardust.scriptdroid.sublime;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@@ -1,11 +1,8 @@
package com.stardust.scriptdroid.sublime_plugin_client; package com.stardust.scriptdroid.sublime;
import android.os.Looper;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.stardust.util.UiHandler;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@@ -1,7 +1,6 @@
package com.stardust.scriptdroid.sublime_plugin_client; package com.stardust.scriptdroid.sublime;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.stardust.scriptdroid.autojs.AutoJs;
import java.io.IOException; import java.io.IOException;
@@ -1,4 +1,4 @@
package com.stardust.scriptdroid.sublime_plugin_client; package com.stardust.scriptdroid.sublime;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.SparseArray; import android.util.SparseArray;
@@ -6,7 +6,6 @@ import android.util.SparseArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonNull; import com.google.gson.JsonNull;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.execution.ScriptExecution; import com.stardust.autojs.execution.ScriptExecution;
import com.stardust.autojs.script.StringScriptSource; import com.stardust.autojs.script.StringScriptSource;
import com.stardust.pio.PFile; import com.stardust.pio.PFile;
@@ -10,7 +10,7 @@ import android.util.SparseArray;
import com.jraska.console.Console; import com.jraska.console.Console;
import com.stardust.autojs.runtime.api.AbstractConsole; import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginService; import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.util.SparseArrayEntries; import com.stardust.util.SparseArrayEntries;
import com.stardust.util.TextUtils; import com.stardust.util.TextUtils;
@@ -13,7 +13,7 @@ import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow; import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.util.UiHandler; import com.stardust.util.UiHandler;
import java.util.ArrayList; import java.util.ArrayList;
@@ -10,8 +10,8 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.stardust.app.Fragment; import com.stardust.app.Fragment;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.view.ViewBinding; import com.stardust.view.ViewBinding;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.console.LogActivity; import com.stardust.scriptdroid.ui.console.LogActivity;
@@ -7,7 +7,6 @@ import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
@@ -29,10 +28,12 @@ import com.stardust.app.FragmentPagerAdapterBuilder;
import com.stardust.app.NotAskAgainDialog; import com.stardust.app.NotAskAgainDialog;
import com.stardust.app.OnActivityResultDelegate; import com.stardust.app.OnActivityResultDelegate;
import com.stardust.enhancedfloaty.FloatyService; import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.pio.PFile;
import com.stardust.scriptdroid.BuildConfig; import com.stardust.scriptdroid.BuildConfig;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageScriptProvider; import com.stardust.scriptdroid.script.StorageScriptProvider;
import com.stardust.scriptdroid.script.sample.Sample; import com.stardust.scriptdroid.script.sample.Sample;
@@ -52,6 +53,7 @@ import com.stardust.util.MessageEvent;
import com.stardust.view.ViewBinder; import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding; import com.stardust.view.ViewBinding;
import com.stardust.view.accessibility.AccessibilityServiceUtils; import com.stardust.view.accessibility.AccessibilityServiceUtils;
import com.stardust.widget.CommonMarkdownView;
import com.stardust.widget.SlidingUpPanel; import com.stardust.widget.SlidingUpPanel;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@@ -94,6 +96,20 @@ public class MainActivity extends BaseActivity {
mIntentToHandle = getIntent(); mIntentToHandle = getIntent();
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
mVersionGuard = new VersionGuard(this); mVersionGuard = new VersionGuard(this);
showAnnunciationIfNeeded();
}
private void showAnnunciationIfNeeded() {
if (!Pref.shouldShowAnnunciation()) {
return;
}
new CommonMarkdownView.DialogBuilder(this)
.padding(36, 0, 36, 0)
.markdown(PFile.read(getResources().openRawResource(R.raw.annunciation)))
.title(R.string.text_annunciation)
.positiveText(R.string.ok)
.canceledOnTouchOutside(false)
.show();
} }
@@ -18,11 +18,11 @@ import com.stardust.app.Fragment;
import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger; import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.service.AccessibilityWatchDogService; import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClient; import com.stardust.scriptdroid.sublime.SublimePluginClient;
import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginService; import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.WifiTool; import com.stardust.scriptdroid.tool.WifiTool;
import com.stardust.scriptdroid.ui.console.LogActivity; import com.stardust.scriptdroid.ui.console.LogActivity;
@@ -280,23 +280,17 @@ public class MyScriptListFragment extends Fragment {
@ViewBinding.Click(R.id.delete) @ViewBinding.Click(R.id.delete)
private void deleteScriptFile() { private void deleteScriptFile() {
dismissDialogs(); dismissDialogs();
if (mSelectedScriptFile.isDirectory()) { new MaterialDialog.Builder(getActivity())
new MaterialDialog.Builder(getActivity()) .title(R.string.delete_confirm)
.title(R.string.delete_confirm) .positiveText(R.string.cancel)
.positiveText(R.string.cancel) .negativeText(R.string.ok)
.negativeText(R.string.ok) .onNegative(new MaterialDialog.SingleButtonCallback() {
.onNegative(new MaterialDialog.SingleButtonCallback() { @Override
@Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { doDeletingScriptFile();
doDeletingScriptFile(); }
} })
}) .show();
.show();
} else {
doDeletingScriptFile();
}
} }
private void doDeletingScriptFile() { private void doDeletingScriptFile() {
@@ -138,7 +138,7 @@ public class SettingsActivity extends BaseActivity {
} }
} }
}) })
.entry(getString(R.string.text_about), new Runnable() { .entry(getString(R.string.text_about_me_and_repo), new Runnable() {
@Override @Override
public void run() { public void run() {
startActivity(new Intent(getActivity(), AboutActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); startActivity(new Intent(getActivity(), AboutActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
@@ -4,19 +4,22 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.KeyEvent;
import android.webkit.WebResourceRequest; import android.webkit.WebResourceRequest;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import org.commonmark.ext.heading.anchor.HeadingAnchorExtension; import org.commonmark.ext.heading.anchor.HeadingAnchorExtension;
import org.commonmark.node.Node; import org.commonmark.node.Node;
import org.commonmark.parser.Parser; import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.renderer.html.HtmlRenderer;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
/** /**
@@ -31,6 +34,7 @@ public class CommonMarkdownView extends WebView {
.build(); .build();
private String mMarkdownHtml; private String mMarkdownHtml;
private String mPadding = "16px";
public CommonMarkdownView(Context context) { public CommonMarkdownView(Context context) {
super(context); super(context);
@@ -47,11 +51,15 @@ public class CommonMarkdownView extends WebView {
init(); init();
} }
public void setPadding(String padding) {
mPadding = padding;
}
private void init() { private void init() {
setWebViewClient(new WebViewClient() { setWebViewClient(new WebViewClient() {
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
loadUrl("javascript:document.body.style.margin=\"12%\"; void 0"); loadUrl("javascript:document.body.style.margin=\"" + mPadding + "\"; void 0");
} }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@@ -104,4 +112,30 @@ public class CommonMarkdownView extends WebView {
loadHtml(mMarkdownHtml); loadHtml(mMarkdownHtml);
} }
} }
public static class DialogBuilder extends ThemeColorMaterialDialogBuilder {
private CommonMarkdownView mMarkdownView;
private FrameLayout mContainer;
public DialogBuilder(@NonNull Context context) {
super(context);
mContainer = new FrameLayout(context);
mMarkdownView = new CommonMarkdownView(context);
mContainer.addView(mMarkdownView);
mContainer.setClipToPadding(true);
customView(mContainer, false);
}
public DialogBuilder padding(int l, int t, int r, int b) {
mContainer.setPadding(l, t, r, b);
return this;
}
public DialogBuilder markdown(String md) {
mMarkdownView.loadMarkdown(md);
return this;
}
}
} }
@@ -19,13 +19,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.NodeInfoView <com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.NodeInfoView
android:id="@+id/node_info" android:id="@+id/node_info"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="#ffffff"/> android:background="#ffffff"/>
<com.stardust.scriptdroid.external.floating_window.menu.layout_inspector.view.LayoutHierarchyView <com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.view.LayoutHierarchyView
android:id="@+id/bounds_view" android:id="@+id/bounds_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
+5
View File
@@ -0,0 +1,5 @@
**本软件为免费软件!**
如果你是从任何地方购买的~那么您很可能已经上当了Σ(っ°Д°;)っ并且这些非官方渠道的软件的安全性无法保证。
另外本软件是开源的,在一定程度上保证了软件本身的安全性,您可以在关于页面查看GitHub上的[项目](https://github.com/hyb1996/NoRootScriptDroid)(欢迎Star~)
+2
View File
@@ -182,6 +182,8 @@
<string name="text_connected">已连接</string> <string name="text_connected">已连接</string>
<string name="text_disconnected">已断开连接</string> <string name="text_disconnected">已断开连接</string>
<string name="text_server_address">服务器地址</string> <string name="text_server_address">服务器地址</string>
<string name="text_annunciation">声明</string>
<string name="text_about_me_and_repo">关于项目与开发者</string>
<string-array name="record_control_keys"> <string-array name="record_control_keys">
<item>无</item> <item>无</item>
+1 -1
View File
@@ -72,7 +72,7 @@
<Preference android:title="@string/text_issue_report"/> <Preference android:title="@string/text_issue_report"/>
<Preference android:title="@string/text_about"/> <Preference android:title="@string/text_about_me_and_repo"/>
<Preference android:title="@string/text_licenses"/> <Preference android:title="@string/text_licenses"/>
</com.stardust.theme.preference.ThemeColorPreferenceCategory> </com.stardust.theme.preference.ThemeColorPreferenceCategory>
@@ -45,7 +45,7 @@ module.exports = function(__runtime__, scope){
function toStrokes(args){ function toStrokes(args){
var screenMetrics = __runtime__.getScreenMetrics(); var screenMetrics = __runtime__.getScreenMetrics();
var len = args.length; var len = args.length;
var strokes = []; var strokes = java.lang.reflect.Array.newInstance(android.accessibilityservice.GestureDescription.StrokeDescription, len);
for(var i = 0; i < len; i++){ for(var i = 0; i < len; i++){
var gesture = args[i]; var gesture = args[i];
var pointsIndex = 1; var pointsIndex = 1;
@@ -63,7 +63,7 @@ module.exports = function(__runtime__, scope){
for(var j = pointsIndex + 1; j < gestureLen; j++){ for(var j = pointsIndex + 1; j < gestureLen; j++){
path.lineTo(screenMetrics.scaleX(gesture[j][0]), screenMetrics.scaleY(gesture[j][1])); path.lineTo(screenMetrics.scaleX(gesture[j][0]), screenMetrics.scaleY(gesture[j][1]));
} }
strokes.push(new android.accessibilityservice.GestureDescription.StrokeDescription(path, start, delay)); strokes[i] = new android.accessibilityservice.GestureDescription.StrokeDescription(path, start, delay);
} }
return strokes; return strokes;
} }
+34 -25
View File
@@ -1,15 +1,15 @@
module.exports = function(__runtime__, scope){ module.exports = function(__runtime__, scope){
var ui = Object.create(__runtime__.ui); var ui = {};
ui.__id_cache__ = {}; ui.__view_cache__ = {};
ui.layout = function(xml){ ui.layout = function(xml){
view = ui.inflate(activity, xml.toString()); var view = __runtime__.ui.layoutInflater.inflate(activity, xml.toString());
ui.setContentView(view); ui.setContentView(view);
} }
ui.setContentView = function(view){ ui.setContentView = function(view){
ui.view = view; ui.view = view;
ui.__id_cache__ = {}; ui.__view_cache__ = {};
activity.setContentView(view); activity.setContentView(view);
} }
@@ -28,7 +28,10 @@ module.exports = function(__runtime__, scope){
} }
ui.nonUi = function(action){ ui.nonUi = function(action){
ui.runOnNonUiThread(action); if(!ui.__executor__){
ui.__executor__ = java.util.concurrent.Executors.newSingleThreadExecutor();
}
ui.__executor__.submit(action);
} }
ui.postDelay = function(action, delay){ ui.postDelay = function(action, delay){
@@ -39,7 +42,7 @@ module.exports = function(__runtime__, scope){
if(typeof(color) == 'string'){ if(typeof(color) == 'string'){
color = android.graphics.Color.parseColor(color); color = android.graphics.Color.parseColor(color);
} }
if(Build.VERSION.SDK_INT >= 21){ if(android.os.Build.VERSION.SDK_INT >= 21){
activity.getWindow().setStatusBarColor(color); activity.getWindow().setStatusBarColor(color);
} }
} }
@@ -48,6 +51,10 @@ module.exports = function(__runtime__, scope){
activity.finish(); activity.finish();
} }
ui.findViewByStringId = function(view, id){
return com.stardust.autojs.runtime.api.ui.JsViewHelper.findViewByStringId(view, id);
}
function decorate(view){ function decorate(view){
var view = Object.create(view); var view = Object.create(view);
view._id = function(id){ view._id = function(id){
@@ -70,23 +77,25 @@ module.exports = function(__runtime__, scope){
return view; return view;
} }
return new JavaAdapter(org.mozilla.javascript.NativeObject, { var proxy = __runtime__.ui;
put: function(name, start, value) { proxy.__proxy__ = {
ui[name] = value; set: function(name, value){
}, ui[name] = value;
get: function(name, start) { },
if(!ui[name] && ui.view){ get: function(name) {
var cacheView = ui.__id_cache__[name]; if(!ui[name] && ui.view){
if(cacheView){ var cacheView = ui.__view_cache__[name];
return cacheView; if(cacheView){
} return cacheView;
cacheView = ui.id(name); }
if(cacheView){ cacheView = ui.id(name);
ui.__id_cache__[name] = cacheView; if(cacheView){
return cacheView; ui.__view_cache__[name] = cacheView;
} return cacheView;
} }
return ui[name]; }
} return ui[name];
}); }
};
return proxy;
} }
@@ -2,18 +2,14 @@ package com.stardust.autojs.engine;
import android.util.Log; import android.util.Log;
import com.stardust.autojs.engine.preprocess.MultiLinePreprocessor; import com.stardust.autojs.rhino.AndroidContextFactory;
import com.stardust.autojs.engine.preprocess.Preprocessor; import com.stardust.autojs.rhino.RhinoAndroidHelper;
import com.stardust.autojs.rhino_android.AndroidContextFactory;
import com.stardust.autojs.rhino_android.RhinoAndroidHelper;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.ScriptInterruptedException;
import com.stardust.autojs.script.ScriptSource; import com.stardust.autojs.script.ScriptSource;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory; import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.ErrorReporter;
import org.mozilla.javascript.EvaluatorException;
import org.mozilla.javascript.ImporterTopLevel; import org.mozilla.javascript.ImporterTopLevel;
import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject; import org.mozilla.javascript.ScriptableObject;
@@ -1,4 +1,4 @@
package com.stardust.autojs.rhino_android; package com.stardust.autojs.rhino;
import com.android.dx.command.dexer.Main; import com.android.dx.command.dexer.Main;
@@ -1,12 +1,10 @@
package com.stardust.autojs.rhino_android; package com.stardust.autojs.rhino;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.ScriptInterruptedException;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.tools.shell.ShellContextFactory; import org.mozilla.javascript.tools.shell.ShellContextFactory;
import org.mozilla.javascript.xml.XMLLib;
import java.io.File; import java.io.File;
@@ -1,4 +1,4 @@
package com.stardust.autojs.rhino_android; package com.stardust.autojs.rhino;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.GeneratedClassLoader; import org.mozilla.javascript.GeneratedClassLoader;
@@ -0,0 +1,57 @@
package com.stardust.autojs.rhino;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.NativeFunction;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.UniqueTag;
/**
* Created by Stardust on 2017/5/17.
*/
public class ProxyObject extends NativeObject {
private NativeFunction mGetter;
private NativeFunction mSetter;
@Override
public void put(String name, Scriptable start, Object value) {
if (name.equals("__proxy__")) {
NativeObject proxy = (NativeObject) value;
Object getter = proxy.get("get", start);
if (getter instanceof NativeFunction) {
mGetter = (NativeFunction) getter;
}
Object setter = proxy.get("set", start);
if (setter instanceof NativeFunction) {
mSetter = (NativeFunction) setter;
}
} else if (mSetter != null) {
mSetter.call(Context.getCurrentContext(), start, start, new Object[]{name, value});
} else {
super.put(name, start, value);
}
}
public Object getWithoutProxy(String name, Scriptable start) {
return super.get(name, start);
}
@Override
public Object get(String name, Scriptable start) {
Object value = super.get(name, start);
if (value != null && value != UniqueTag.NOT_FOUND) {
return value;
}
if (mGetter != null) {
value = mGetter.call(Context.getCurrentContext(), start, start, new Object[]{name});
}
return value;
}
@Override
public Object getDefaultValue(Class<?> typeHint) {
return toString();
}
}
@@ -1,4 +1,4 @@
package com.stardust.autojs.rhino_android; package com.stardust.autojs.rhino;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
@@ -1,14 +1,12 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.runtime;
import android.view.LayoutInflater;
import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.runtime.api.UiSelector; import com.stardust.autojs.runtime.api.UiSelector;
import com.stardust.autojs.runtime.api.ui.UI; import com.stardust.autojs.runtime.api.ui.UI;
import com.stardust.autojs.runtime.simple_action.SimpleActionAutomator; import com.stardust.autojs.runtime.simpleaction.SimpleActionAutomator;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;
import com.stardust.view.accessibility.AccessibilityInfoProvider; import com.stardust.view.accessibility.AccessibilityInfoProvider;
@@ -5,8 +5,7 @@ import android.os.Looper;
import com.stardust.autojs.R; import com.stardust.autojs.R;
import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.engine.preprocess.Preprocessor; import com.stardust.autojs.rhino.AndroidClassLoader;
import com.stardust.autojs.rhino_android.AndroidClassLoader;
import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Console;
@@ -1,49 +1,52 @@
package com.stardust.autojs.runtime.api.ui; package com.stardust.autojs.runtime.api.ui;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import java.util.concurrent.Executor; import com.stardust.autojs.rhino.ProxyObject;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.UniqueTag;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* Created by Stardust on 2017/5/14. * Created by Stardust on 2017/5/14.
*/ */
public class UI { public class UI extends ProxyObject {
private Context mContext; private Context mContext;
private JsLayoutInflater mJsLayoutInflater; private Map<String, Object> mProperties = new ConcurrentHashMap<>();
private ExecutorService mExecutorService;
public UI(Context context, JsLayoutInflater layoutInflater) { public UI(Context context, JsLayoutInflater layoutInflater) {
mContext = context; mContext = context;
mJsLayoutInflater = layoutInflater; mProperties.put("layoutInflater", layoutInflater);
} }
public UI(Context context) { public UI(Context context) {
this(context, new ConvertLayoutInflater()); this(context, new ConvertLayoutInflater());
} }
public JsLayoutInflater getLayoutInflater() {
return mJsLayoutInflater; @Override
public String getClassName() {
return UI.class.getSimpleName();
} }
public View inflate(Context context, String xml) {
return mJsLayoutInflater.inflate(context, xml);
}
public void runOnNonUiThread(Runnable action) { @Override
if (mExecutorService == null) { public Object get(String name, Scriptable start) {
mExecutorService = Executors.newSingleThreadExecutor(); Object value = super.get(name, start);
if (value != null && value != UniqueTag.NOT_FOUND && !value.equals(org.mozilla.javascript.Context.getUndefinedValue())) {
return value;
} }
mExecutorService.submit(action); value = mProperties.get(name);
if (value != null)
return value;
return UniqueTag.NOT_FOUND;
} }
public View findViewByStringId(View view, String id) {
return JsViewHelper.findViewByStringId(view, id);
}
} }
@@ -1,28 +1,22 @@
package com.stardust.autojs.runtime.simple_action; package com.stardust.autojs.runtime.simpleaction;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.GestureDescription; import android.accessibilityservice.GestureDescription;
import android.graphics.Path;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build; import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.util.Log; import android.util.Log;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.autojs.runtime.AbstractScriptRuntime; import com.stardust.autojs.runtime.AbstractScriptRuntime;
import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.runtime.AccessibilityBridge;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.runtime.ScriptInterface;
import com.stardust.autojs.runtime.api.AutomatorConfig; import com.stardust.autojs.runtime.api.AutomatorConfig;
import com.stardust.automator.AccessibilityEventCommandHost;
import com.stardust.automator.GlobalActionAutomator; import com.stardust.automator.GlobalActionAutomator;
import com.stardust.automator.UiObject; import com.stardust.automator.UiObject;
import com.stardust.automator.simple_action.SimpleAction;
import com.stardust.automator.simple_action.ActionFactory; import com.stardust.automator.simple_action.ActionFactory;
import com.stardust.automator.simple_action.ActionTarget; import com.stardust.automator.simple_action.ActionTarget;
import com.stardust.automator.simple_action.SimpleAction;
import com.stardust.util.DeveloperUtils; import com.stardust.util.DeveloperUtils;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;
@@ -173,21 +167,22 @@ public class SimpleActionAutomator {
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
public boolean gestures(GestureDescription.StrokeDescription... strokes) { public boolean gestures(Object strokes) {
prepareForGesture(); prepareForGesture();
return mGlobalActionAutomator.gestures(strokes); return mGlobalActionAutomator.gestures((GestureDescription.StrokeDescription[]) strokes);
} }
//如果这里用GestureDescription.StrokeDescription[]为参数,安卓7.0以下会因为找不到这个类而报错
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
public void gesturesAsync(GestureDescription.StrokeDescription... strokes) { public void gesturesAsync(Object strokes) {
prepareForGesture(); prepareForGesture();
mGlobalActionAutomator.gesturesAsync(strokes); mGlobalActionAutomator.gesturesAsync((GestureDescription.StrokeDescription[]) strokes);
} }
private void prepareForGesture() { private void prepareForGesture() {
ensureAccessibilityServiceEnabled(); ensureAccessibilityServiceEnabled();
mScriptRuntime.requiresApi(24);
mGlobalActionAutomator.setService(mAccessibilityBridge.getService()); mGlobalActionAutomator.setService(mAccessibilityBridge.getService());
} }
@ScriptInterface @ScriptInterface
@@ -3,7 +3,6 @@ package com.stardust.autojs.script;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import com.stardust.autojs.rhino_android.RhinoAndroidHelper;
import com.stardust.pio.PFile; import com.stardust.pio.PFile;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;
@@ -2,7 +2,6 @@ package com.stardust.automator;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.GestureDescription; import android.accessibilityservice.GestureDescription;
import android.content.Context;
import android.graphics.Path; import android.graphics.Path;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;