修复 UiCollection.forEach报错的问题

可能修复 部分设备无法找图的问题
This commit is contained in:
hyb1996
2018-10-19 16:18:48 +08:00
parent 78e0d6b088
commit 2b71f5e856
5 changed files with 34 additions and 28 deletions

View File

@@ -14,6 +14,7 @@ import com.bumptech.glide.request.transition.Transition;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.LeakCanary;
import com.stardust.app.GlobalAppContext; import com.stardust.app.GlobalAppContext;
import com.stardust.autojs.core.image.OpenCVHelper;
import com.stardust.autojs.core.ui.inflater.ImageLoader; import com.stardust.autojs.core.ui.inflater.ImageLoader;
import com.stardust.autojs.core.ui.inflater.util.Drawables; import com.stardust.autojs.core.ui.inflater.util.Drawables;
import com.stardust.theme.ThemeColor; import com.stardust.theme.ThemeColor;
@@ -30,6 +31,8 @@ import org.autojs.autojs.timing.TimedTaskManager;
import org.autojs.autojs.timing.TimedTaskScheduler; import org.autojs.autojs.timing.TimedTaskScheduler;
import org.autojs.autojs.tool.CrashHandler; import org.autojs.autojs.tool.CrashHandler;
import org.autojs.autojs.ui.error.ErrorReportActivity; import org.autojs.autojs.ui.error.ErrorReportActivity;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.OpenCVLoader;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList; import java.util.ArrayList;
@@ -107,6 +110,7 @@ public class App extends MultiDexApplication {
setupDrawableImageLoader(); setupDrawableImageLoader();
TimedTaskScheduler.checkTasksRepeatedlyIfNeeded(this); TimedTaskScheduler.checkTasksRepeatedlyIfNeeded(this);
initDynamicBroadcastReceivers(); initDynamicBroadcastReceivers();
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")

View File

@@ -35,6 +35,8 @@ import com.stardust.view.accessibility.LayoutInspector;
import org.mozilla.javascript.ContextFactory; import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.Scriptable;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.OpenCVLoader;
import java.io.File; import java.io.File;
@@ -82,6 +84,9 @@ public abstract class AutoJs {
protected void init() { protected void init() {
addAccessibilityServiceDelegates(); addAccessibilityServiceDelegates();
registerActivityLifecycleCallbacks(); registerActivityLifecycleCallbacks();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, mContext, new BaseLoaderCallback(mContext) {
});
} }
public abstract void ensureAccessibilityServiceEnabled(); public abstract void ensureAccessibilityServiceEnabled();

View File

@@ -45,6 +45,7 @@ public class OpenCVHelper {
}); });
} }
public static class LoaderCallback implements LoaderCallbackInterface { public static class LoaderCallback implements LoaderCallbackInterface {
private Activity mActivity; private Activity mActivity;

View File

@@ -55,7 +55,7 @@ import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.
* Created by Stardust on 2017/3/9. * Created by Stardust on 2017/3/9.
*/ */
public class UiObjectCollection implements List<UiObject> { public class UiObjectCollection {
public static final UiObjectCollection EMPTY = UiObjectCollection.of(Collections.<UiObject>emptyList()); public static final UiObjectCollection EMPTY = UiObjectCollection.of(Collections.<UiObject>emptyList());
@@ -73,59 +73,55 @@ public class UiObjectCollection implements List<UiObject> {
return mNodes.toArray(new UiObject[0]); return mNodes.toArray(new UiObject[0]);
} }
@Override
public <T> T[] toArray(T[] a) { public <T> T[] toArray(T[] a) {
return mNodes.toArray(a); return mNodes.toArray(a);
} }
@Override
public boolean add(UiObject uiObject) { public boolean add(UiObject uiObject) {
return mNodes.add(uiObject); return mNodes.add(uiObject);
} }
@Override
public boolean remove(Object o) { public boolean remove(Object o) {
return mNodes.remove(o); return mNodes.remove(o);
} }
@Override
public boolean containsAll(Collection<?> c) { public boolean containsAll(Collection<?> c) {
return mNodes.containsAll(c); return mNodes.containsAll(c);
} }
@Override
public boolean addAll(Collection<? extends UiObject> c) { public boolean addAll(Collection<? extends UiObject> c) {
return mNodes.addAll(c); return mNodes.addAll(c);
} }
@Override
public boolean addAll(int index, Collection<? extends UiObject> c) { public boolean addAll(int index, Collection<? extends UiObject> c) {
return mNodes.addAll(index, c); return mNodes.addAll(index, c);
} }
@Override
public boolean removeAll(Collection<?> c) { public boolean removeAll(Collection<?> c) {
return mNodes.removeAll(c); return mNodes.removeAll(c);
} }
@Override
public boolean retainAll(Collection<?> c) { public boolean retainAll(Collection<?> c) {
return mNodes.retainAll(c); return mNodes.retainAll(c);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void replaceAll(UnaryOperator<UiObject> operator) { public void replaceAll(UnaryOperator<UiObject> operator) {
mNodes.replaceAll(operator); mNodes.replaceAll(operator);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void sort(Comparator<? super UiObject> c) { public void sort(Comparator<? super UiObject> c) {
mNodes.sort(c); mNodes.sort(c);
} }
@Override
public void clear() { public void clear() {
mNodes.clear(); mNodes.clear();
} }
@@ -270,69 +266,69 @@ public class UiObjectCollection implements List<UiObject> {
return mNodes.get(i); return mNodes.get(i);
} }
@Override
public UiObject set(int index, UiObject element) { public UiObject set(int index, UiObject element) {
return mNodes.set(index, element); return mNodes.set(index, element);
} }
@Override
public void add(int index, UiObject element) { public void add(int index, UiObject element) {
mNodes.add(index, element); mNodes.add(index, element);
} }
@Override
public UiObject remove(int index) { public UiObject remove(int index) {
return mNodes.remove(index); return mNodes.remove(index);
} }
@Override
public int indexOf(Object o) { public int indexOf(Object o) {
return mNodes.indexOf(o); return mNodes.indexOf(o);
} }
@Override
public int lastIndexOf(Object o) { public int lastIndexOf(Object o) {
return mNodes.lastIndexOf(o); return mNodes.lastIndexOf(o);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public ListIterator<UiObject> listIterator() { public ListIterator<UiObject> listIterator() {
return mNodes.listIterator(); return mNodes.listIterator();
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public ListIterator<UiObject> listIterator(int index) { public ListIterator<UiObject> listIterator(int index) {
return mNodes.listIterator(index); return mNodes.listIterator(index);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public List<UiObject> subList(int fromIndex, int toIndex) { public List<UiObject> subList(int fromIndex, int toIndex) {
return mNodes.subList(fromIndex, toIndex); return mNodes.subList(fromIndex, toIndex);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public Spliterator<UiObject> spliterator() { public Spliterator<UiObject> spliterator() {
return mNodes.spliterator(); return mNodes.spliterator();
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public boolean removeIf(Predicate<? super UiObject> filter) { public boolean removeIf(Predicate<? super UiObject> filter) {
return mNodes.removeIf(filter); return mNodes.removeIf(filter);
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public Stream<UiObject> stream() { public Stream<UiObject> stream() {
return mNodes.stream(); return mNodes.stream();
} }
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override
public Stream<UiObject> parallelStream() { public Stream<UiObject> parallelStream() {
return mNodes.parallelStream(); return mNodes.parallelStream();
} }
@@ -341,17 +337,17 @@ public class UiObjectCollection implements List<UiObject> {
return mNodes.size(); return mNodes.size();
} }
@Override
public boolean isEmpty() { public boolean isEmpty() {
return mNodes.isEmpty(); return mNodes.isEmpty();
} }
@Override
public boolean contains(Object o) { public boolean contains(Object o) {
return mNodes.contains(o); return mNodes.contains(o);
} }
@Override
public Iterator<UiObject> iterator() { public Iterator<UiObject> iterator() {
return mNodes.iterator(); return mNodes.iterator();
} }

View File

@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":433,"versionName":"4.0.4 Alpha4","enabled":true,"outputFile":"commonRelease-4.0.4 Alpha4.apk","fullName":"commonRelease","baseName":"common-release"},"path":"commonRelease-4.0.4 Alpha4.apk","properties":{}}] [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":434,"versionName":"4.0.4 Alpha5","enabled":true,"outputFile":"commonRelease-4.0.4 Alpha5.apk","fullName":"commonRelease","baseName":"common-release"},"path":"commonRelease-4.0.4 Alpha5.apk","properties":{}}]