diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa77d01b..2c160f66 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -277,7 +277,7 @@ diff --git a/app/src/main/java/org/autojs/autojs/accessibility/AccessibilityService.java b/app/src/main/java/org/autojs/autojs/accessibility/AccessibilityService.java deleted file mode 100644 index 3dfadd33..00000000 --- a/app/src/main/java/org/autojs/autojs/accessibility/AccessibilityService.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.autojs.autojs.accessibility; - - -import android.accessibilityservice.AccessibilityServiceInfo; - -import org.autojs.autojs.Pref; - -/** - * Created by Stardust on 2017/8/14. - */ - -public class AccessibilityService extends com.stardust.view.accessibility.AccessibilityService { - - @Override - protected void onServiceConnected() { - AccessibilityServiceInfo serviceInfo = getServiceInfo(); - if (Pref.isStableModeEnabled()) { - serviceInfo.flags &= ~AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS; - } else { - serviceInfo.flags |= AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS; - } - setServiceInfo(serviceInfo); - super.onServiceConnected(); - } - - -} diff --git a/app/src/main/java/org/autojs/autojs/autojs/AutoJs.java b/app/src/main/java/org/autojs/autojs/autojs/AutoJs.java index 42dac8c1..c85ed7a9 100644 --- a/app/src/main/java/org/autojs/autojs/autojs/AutoJs.java +++ b/app/src/main/java/org/autojs/autojs/autojs/AutoJs.java @@ -162,7 +162,7 @@ public class AutoJs extends com.stardust.autojs.AutoJs { } if (errorMessage != null) { AccessibilityServiceTool.goToAccessibilitySetting(); - if (!org.autojs.autojs.accessibility.AccessibilityService.Companion.waitForEnabled(-1)) { + if (!AccessibilityService.Companion.waitForEnabled(-1)) { throw new ScriptInterruptedException(); } } diff --git a/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java b/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java index 7b4ec1b7..b6e454ec 100644 --- a/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java +++ b/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java @@ -57,7 +57,6 @@ public class ApkBuilder { String packageName; ArrayList ignoredDirs = new ArrayList<>(); Callable icon; - ProjectConfig projectConfig; public static AppConfig fromProjectConfig(String projectDir, ProjectConfig projectConfig) { String icon = projectConfig.getIcon(); @@ -68,7 +67,6 @@ public class ApkBuilder { .setVersionCode(projectConfig.getVersionCode()) .setVersionName(projectConfig.getVersionName()) .setSourcePath(projectDir); - appConfig.projectConfig = projectConfig; if (icon != null) { appConfig.setIcon(new File(projectDir, icon).getPath()); } @@ -243,16 +241,25 @@ public class ApkBuilder { return new File(mWorkspacePath, "AndroidManifest.xml"); } - private void updateProjectConfig(AppConfig config) { - if (!PFiles.isDir(config.sourcePath)) { - return; + private void updateProjectConfig(AppConfig appConfig) { + ProjectConfig config; + if (!PFiles.isDir(appConfig.sourcePath)) { + config = new ProjectConfig() + .setMainScriptFile("main.js") + .setName(appConfig.appName) + .setPackageName(appConfig.packageName) + .setVersionName(appConfig.versionName) + .setVersionCode(appConfig.versionCode); + config.setBuildInfo(BuildInfo.generate(appConfig.versionCode)); + PFiles.write(new File(mWorkspacePath, "assets/project/project.json").getPath(), config.toJson()); + } else { + config = ProjectConfig.fromProjectDir(appConfig.sourcePath); + long buildNumber = config.getBuildInfo().getBuildNumber(); + config.setBuildInfo(BuildInfo.generate(buildNumber + 1)); + PFiles.write(ProjectConfig.configFileOfDir(appConfig.sourcePath), config.toJson()); } - ProjectConfig projectConfig = ProjectConfig.fromProjectDir(config.sourcePath); - long buildNumber = projectConfig.getBuildInfo().getBuildNumber(); - projectConfig.setBuildInfo(BuildInfo.generate(buildNumber + 1)); - mKey = MD5.md5(mAppConfig.projectConfig.getPackageName() + mAppConfig.projectConfig.getVersionName() + mAppConfig.projectConfig.getMainScriptFile()); - mInitVector = MD5.md5(mAppConfig.projectConfig.getBuildInfo().getBuildId() + mAppConfig.projectConfig.getName()).substring(0, 16); - PFiles.write(ProjectConfig.configFileOfDir(config.sourcePath), projectConfig.toJson()); + mKey = MD5.md5(config.getPackageName() + config.getVersionName() + config.getMainScriptFile()); + mInitVector = MD5.md5(config.getBuildInfo().getBuildId() + config.getName()).substring(0, 16); } public ApkBuilder build() throws IOException { diff --git a/app/src/main/java/org/autojs/autojs/external/tile/LayoutInspectTileService.java b/app/src/main/java/org/autojs/autojs/external/tile/LayoutInspectTileService.java index a257e9b5..26aa5768 100644 --- a/app/src/main/java/org/autojs/autojs/external/tile/LayoutInspectTileService.java +++ b/app/src/main/java/org/autojs/autojs/external/tile/LayoutInspectTileService.java @@ -9,11 +9,11 @@ import android.util.Log; import android.widget.Toast; import com.stardust.app.GlobalAppContext; +import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.LayoutInspector; import com.stardust.view.accessibility.NodeInfo; import org.autojs.autojs.R; -import org.autojs.autojs.accessibility.AccessibilityService; import org.autojs.autojs.autojs.AutoJs; import org.autojs.autojs.tool.AccessibilityServiceTool; import org.autojs.autojs.ui.floating.FloatyWindowManger; diff --git a/app/src/main/java/org/autojs/autojs/tool/AccessibilityServiceTool.java b/app/src/main/java/org/autojs/autojs/tool/AccessibilityServiceTool.java index e5570eb4..89719c0e 100644 --- a/app/src/main/java/org/autojs/autojs/tool/AccessibilityServiceTool.java +++ b/app/src/main/java/org/autojs/autojs/tool/AccessibilityServiceTool.java @@ -8,8 +8,9 @@ import com.stardust.app.GlobalAppContext; import org.autojs.autojs.Pref; import org.autojs.autojs.App; import org.autojs.autojs.R; + +import com.stardust.autojs.core.accessibility.AccessibilityService; import com.stardust.autojs.core.util.ProcessShell; -import org.autojs.autojs.accessibility.AccessibilityService; import com.stardust.view.accessibility.AccessibilityServiceUtils; import java.util.Locale; diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java b/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java index d5ea2e03..cba270f3 100644 --- a/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java +++ b/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java @@ -17,7 +17,6 @@ import com.stardust.enhancedfloaty.FloatyWindow; import org.autojs.autojs.Pref; import org.autojs.autojs.R; -import org.autojs.autojs.accessibility.AccessibilityService; import org.autojs.autojs.autojs.AutoJs; import org.autojs.autojs.autojs.record.GlobalActionRecorder; import org.autojs.autojs.model.explorer.ExplorerDirPage; @@ -34,6 +33,7 @@ import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder; import com.stardust.util.ClipboardUtil; import com.stardust.util.Func1; +import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.LayoutInspector; import com.stardust.view.accessibility.NodeInfo; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f3d7048..e8cbabda 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -431,6 +431,8 @@ Auto.js启动时 查看使用统计权限 通过\"查看使用统计\"权限可以获取本设备过去使用应用的情况,从而使获取当前应用(currentPackage)时更准确。 + 手势监听 + 开启后将支持events手势事件,但Auto.js崩溃时可能会导致屏幕失灵 描述至少要 %d 个字. 描述至少要 %d 个字. diff --git a/autojs/src/main/assets/modules/jvm-npm.js b/autojs/src/main/assets/modules/jvm-npm.js index 560959f1..84303080 100644 --- a/autojs/src/main/assets/modules/jvm-npm.js +++ b/autojs/src/main/assets/modules/jvm-npm.js @@ -58,15 +58,6 @@ module = (typeof module === 'undefined') ? {} : module; Module._load = function _load(file, parent, core, main) { return NativeRequire.require(file); - var module = new Module(file, parent, core); - var body = readFile(module.filename, module.core); - var dir = new File(module.filename).getParent(); - var func = new Function('exports', 'module', 'require', '__filename', '__dirname', body); - func.apply(module, - [module.exports, module, module.require, module.filename, dir]); - module.loaded = true; - module.main = main; - return module.exports; }; Module.runMain = function runMain(main) { diff --git a/autojs/src/main/java/com/stardust/autojs/core/accessibility/AccessibilityService.kt b/autojs/src/main/java/com/stardust/autojs/core/accessibility/AccessibilityService.kt new file mode 100644 index 00000000..32dcc466 --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/accessibility/AccessibilityService.kt @@ -0,0 +1,28 @@ +package com.stardust.autojs.core.accessibility + +import android.accessibilityservice.AccessibilityServiceInfo +import android.os.Build +import com.stardust.autojs.core.pref.Pref +import com.stardust.view.accessibility.AccessibilityService + +class AccessibilityService : AccessibilityService() { + + override fun onServiceConnected() { + val serviceInfo = serviceInfo + if (Pref.isStableModeEnabled) { + serviceInfo.flags = serviceInfo.flags and AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS.inv() + } else { + serviceInfo.flags = serviceInfo.flags or AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (Pref.isGestureObservingEnabled) { + serviceInfo.flags = serviceInfo.flags or AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE + } else { + serviceInfo.flags = serviceInfo.flags and AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE.inv() + } + } + setServiceInfo(serviceInfo) + super.onServiceConnected() + + } +} \ No newline at end of file diff --git a/autojs/src/main/java/com/stardust/autojs/core/pref/Pref.kt b/autojs/src/main/java/com/stardust/autojs/core/pref/Pref.kt new file mode 100644 index 00000000..846b2bc8 --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/pref/Pref.kt @@ -0,0 +1,18 @@ +package com.stardust.autojs.core.pref + +import android.preference.PreferenceManager +import com.stardust.app.GlobalAppContext + +object Pref { + private val preferences = PreferenceManager.getDefaultSharedPreferences(GlobalAppContext.get()) + + val isStableModeEnabled: Boolean + get() { + return preferences.getBoolean("key_stable_mode", false) + } + + val isGestureObservingEnabled: Boolean + get() { + return preferences.getBoolean("key_gesture_observing", false) + } +} \ No newline at end of file diff --git a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java index 4446466e..2c00b680 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java @@ -126,7 +126,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine { Collections.singletonList(new File("/").toURI())); new RequireBuilder() .setModuleScriptProvider(new SoftCachingModuleScriptProvider(provider)) - .setSandboxed(false) + .setSandboxed(true) .createRequire(context, scope) .install(scope); diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java index 9eb0177d..ff0fbc91 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Events.java @@ -7,7 +7,9 @@ import android.graphics.Point; import android.os.Build; import android.os.Handler; import android.provider.Settings; + import androidx.annotation.RequiresApi; + import android.view.KeyEvent; import com.stardust.autojs.R; @@ -23,6 +25,7 @@ import com.stardust.notification.NotificationListenerService; import com.stardust.autojs.runtime.exception.ScriptException; import com.stardust.autojs.core.inputevent.InputEventObserver; import com.stardust.autojs.core.inputevent.TouchObserver; +import com.stardust.util.MapBuilder; import com.stardust.view.accessibility.AccessibilityNotificationObserver; import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.KeyInterceptor; @@ -30,16 +33,35 @@ import com.stardust.view.accessibility.NotificationListener; import com.stardust.view.accessibility.OnKeyListener; import java.util.HashSet; +import java.util.Map; import java.util.Set; /** * Created by Stardust on 2017/7/18. */ -public class Events extends EventEmitter implements OnKeyListener, TouchObserver.OnTouchEventListener, NotificationListener, AccessibilityNotificationObserver.ToastListener { +public class Events extends EventEmitter implements OnKeyListener, TouchObserver.OnTouchEventListener, NotificationListener, AccessibilityNotificationObserver.ToastListener, AccessibilityService.GestureListener { private static final String PREFIX_KEY_DOWN = "__key_down__#"; private static final String PREFIX_KEY_UP = "__key_up__#"; + private static final Map GESTURES = new MapBuilder() + .put(AccessibilityService.GESTURE_SWIPE_UP, "up") + .put(AccessibilityService.GESTURE_SWIPE_DOWN, "down") + .put(AccessibilityService.GESTURE_SWIPE_LEFT, "left") + .put(AccessibilityService.GESTURE_SWIPE_RIGHT, "right") + .put(AccessibilityService.GESTURE_SWIPE_LEFT_AND_RIGHT, "left_right") + .put(AccessibilityService.GESTURE_SWIPE_RIGHT_AND_LEFT, "right_left") + .put(AccessibilityService.GESTURE_SWIPE_UP_AND_DOWN, "up_down") + .put(AccessibilityService.GESTURE_SWIPE_DOWN_AND_UP, "down_up") + .put(AccessibilityService.GESTURE_SWIPE_LEFT_AND_UP, "left_up") + .put(AccessibilityService.GESTURE_SWIPE_LEFT_AND_DOWN, "left_down") + .put(AccessibilityService.GESTURE_SWIPE_RIGHT_AND_UP, "right_up") + .put(AccessibilityService.GESTURE_SWIPE_RIGHT_AND_DOWN, "right_down") + .put(AccessibilityService.GESTURE_SWIPE_UP_AND_LEFT, "up_left") + .put(AccessibilityService.GESTURE_SWIPE_UP_AND_RIGHT, "up_right") + .put(AccessibilityService.GESTURE_SWIPE_DOWN_AND_LEFT, "down_left") + .put(AccessibilityService.GESTURE_SWIPE_DOWN_AND_RIGHT, "down_right") + .build(); private AccessibilityBridge mAccessibilityBridge; private Context mContext; @@ -50,6 +72,7 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver private Loopers mLoopers; private Handler mHandler; private boolean mListeningNotification = false; + private boolean mListeningGesture = false; private boolean mListeningToast = false; private ScriptRuntime mScriptRuntime; private volatile boolean mInterceptsAllKey = false; @@ -222,6 +245,21 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver mAccessibilityBridge.getNotificationObserver().addToastListener(this); } + public void observeGesture() { + ScriptRuntime.requiresApi(Build.VERSION_CODES.O); + if (mListeningGesture) { + return; + } + AccessibilityService service = getAccessibilityService(); + if ((service.getServiceInfo().flags & AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE) == 0) { + throw new ScriptException(mContext.getString(R.string.text_should_enable_gesture_observing)); + } + service.getGestureEventDispatcher().addListener(this); + ensureHandler(); + mLoopers.waitWhenIdle(true); + mListeningGesture = true; + } + public Events onNotification(Object listener) { on("notification", listener); return this; @@ -260,6 +298,12 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver } mKeyInterceptor = null; } + if (mListeningGesture) { + AccessibilityService service = mAccessibilityBridge.getService(); + if (service != null) { + service.getGestureEventDispatcher().removeListener(this); + } + } } @Override @@ -297,4 +341,13 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver mHandler.post(() -> emit("toast", toast)); } + @Override + public void onGesture(int gestureId) { + mHandler.post(() -> { + String gesture = GESTURES.get(gestureId); + if (gesture != null) { + emit("gesture", gesture); + } + }); + } } diff --git a/autojs/src/main/res/values/strings.xml b/autojs/src/main/res/values/strings.xml index a2ce0e93..4bbb6580 100644 --- a/autojs/src/main/res/values/strings.xml +++ b/autojs/src/main/res/values/strings.xml @@ -15,6 +15,7 @@ 使脚本自动操作(点击、长按、滑动等)所需,若关闭则只能执行不涉及自动操作的脚本。 AutoJs 按键监听未启用,请在软件设置中开启 + 手势监听未启用,请在软件设置中开启 沒有修改系統设置权限 通知服务未运行,请重新启用通知权限 本脚本需要Auto.js版本号%d以上才能运行 diff --git a/autojs/src/main/res/xml/accessibility_service_config.xml b/autojs/src/main/res/xml/accessibility_service_config.xml index a538ccb9..b67947f4 100644 --- a/autojs/src/main/res/xml/accessibility_service_config.xml +++ b/autojs/src/main/res/xml/accessibility_service_config.xml @@ -6,6 +6,7 @@ android:canPerformGestures="true" android:canRequestEnhancedWebAccessibility="true" android:canRequestFilterKeyEvents="true" + android:canRequestTouchExplorationMode="true" android:canRetrieveWindowContent="true" android:description="@string/text_accessibility_service_description" android:notificationTimeout="0"/> \ No newline at end of file diff --git a/automator/src/main/java/com/stardust/automator/filter/BoundsFilter.kt b/automator/src/main/java/com/stardust/automator/filter/BoundsFilter.kt index 76c74b37..6c4cfc52 100644 --- a/automator/src/main/java/com/stardust/automator/filter/BoundsFilter.kt +++ b/automator/src/main/java/com/stardust/automator/filter/BoundsFilter.kt @@ -22,9 +22,11 @@ class BoundsFilter(private val mBounds: Rect, private val mType: Int) : DfsFilte } override fun toString(): String { - return String.format(Locale.getDefault(), "bounds%s(%d, %d, %d, %d)", if (mType == TYPE_EQUALS) - "" - else if (mType == TYPE_INSIDE) "Inside" else "Contains", + return String.format(Locale.getDefault(), "bounds%s(%d, %d, %d, %d)", when (mType) { + TYPE_EQUALS -> "" + TYPE_INSIDE -> "Inside" + else -> "Contains" + }, mBounds.left, mBounds.top, mBounds.right, mBounds.bottom) } diff --git a/automator/src/main/java/com/stardust/automator/filter/IdFilter.kt b/automator/src/main/java/com/stardust/automator/filter/IdFilter.kt index f7517b09..fe0e2bf2 100644 --- a/automator/src/main/java/com/stardust/automator/filter/IdFilter.kt +++ b/automator/src/main/java/com/stardust/automator/filter/IdFilter.kt @@ -10,7 +10,7 @@ object IdFilter { private val ID_GETTER = object : KeyGetter { - override fun getKey(nodeInfo: UiObject): String { + override fun getKey(nodeInfo: UiObject): String? { return nodeInfo.viewIdResourceName } diff --git a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt index ddb1eaae..c9594380 100644 --- a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt +++ b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt @@ -5,25 +5,39 @@ import android.util.Log import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo +import com.stardust.event.EventDispatcher import java.util.HashSet -import java.util.SortedMap import java.util.TreeMap import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import java.util.concurrent.TimeUnit -import java.util.concurrent.locks.Condition import java.util.concurrent.locks.ReentrantLock /** * Created by Stardust on 2017/5/2. */ + open class AccessibilityService : android.accessibilityservice.AccessibilityService() { + + interface GestureListener { + fun onGesture(gestureId: Int) + } + val onKeyObserver = OnKeyListener.Observer() val keyInterrupterObserver = KeyInterceptor.Observer() - private var mKeyEventExecutor: ExecutorService? = null + val gestureEventDispatcher = EventDispatcher() + private var mEventExecutor: ExecutorService? = null private var mFastRootInActiveWindow: AccessibilityNodeInfo? = null + private val eventExecutor: ExecutorService + get() { + return mEventExecutor ?: { + val executor = Executors.newSingleThreadExecutor() + mEventExecutor = executor + executor + }() + } override fun onAccessibilityEvent(event: AccessibilityEvent) { instance = this @@ -55,29 +69,34 @@ open class AccessibilityService : android.accessibilityservice.AccessibilityServ } override fun onKeyEvent(event: KeyEvent): Boolean { - if (mKeyEventExecutor == null) { - mKeyEventExecutor = Executors.newSingleThreadExecutor() - } - mKeyEventExecutor!!.execute { + eventExecutor.execute { stickOnKeyObserver.onKeyEvent(event.keyCode, event) onKeyObserver.onKeyEvent(event.keyCode, event) } return keyInterrupterObserver.onInterceptKeyEvent(event) } + override fun onGesture(gestureId: Int): Boolean { + eventExecutor.execute { + gestureEventDispatcher.dispatchEvent { + onGesture(gestureId) + } + } + return false + } + override fun getRootInActiveWindow(): AccessibilityNodeInfo? { - try { - return super.getRootInActiveWindow() + return try { + super.getRootInActiveWindow() } catch (e: Exception) { - return null + null } } override fun onDestroy() { instance = null - if (mKeyEventExecutor != null) - mKeyEventExecutor!!.shutdownNow() + mEventExecutor?.shutdownNow() super.onDestroy() } diff --git a/common/release/output.json b/common/release/output.json index f9a90a91..7efa4743 100644 --- a/common/release/output.json +++ b/common/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":441,"versionName":"4.0.4 Alpha12","enabled":true,"outputFile":"commonRelease-4.0.4 Alpha12.apk","fullName":"commonRelease","baseName":"common-release"},"path":"commonRelease-4.0.4 Alpha12.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":450,"versionName":"4.0.5 Alpha","enabled":true,"outputFile":"commonRelease-4.0.5 Alpha.apk","fullName":"commonRelease","baseName":"common-release"},"path":"commonRelease-4.0.5 Alpha.apk","properties":{}}] \ No newline at end of file diff --git a/inrt/src/main/AndroidManifest.xml b/inrt/src/main/AndroidManifest.xml index 88f80e07..5a142b01 100644 --- a/inrt/src/main/AndroidManifest.xml +++ b/inrt/src/main/AndroidManifest.xml @@ -45,19 +45,6 @@ - - - - - - - -