Android 如何通过自动测试工具检测应用程序是否正在运行?

Android 如何通过自动测试工具检测应用程序是否正在运行?,android,automated-tests,android-espresso,android-uiautomator,Android,Automated Tests,Android Espresso,Android Uiautomator,有时,黑客可能会使用自动化工具,如Robotium、Espresso、UiAutomator2、Appium,来自动操作我客户的应用程序,这些应用程序将集成我们的SDK,以赚取利润 那么,如何在不编辑应用程序本身的情况下检测当前应用程序是否正在通过此类自动化测试工具运行(检查服务和流程除外)?谢谢~最好的方法是从应用程序中删除所有ID、文本描述和其他帮助程序。即使存在ID,也有多个具有不同ID或动态ID的构建。其他方法包括: 定期重新调整应用程序的外观,以避免使用图像比较实现自动化。 有更多的验

有时,黑客可能会使用自动化工具,如
Robotium、Espresso、UiAutomator2、Appium
,来自动操作我客户的应用程序,这些应用程序将集成我们的SDK,以赚取利润


那么,如何在不编辑应用程序本身的情况下检测当前应用程序是否正在通过此类自动化测试工具运行(检查服务和流程除外)?谢谢~

最好的方法是从应用程序中删除所有ID、文本描述和其他帮助程序。即使存在ID,也有多个具有不同ID或动态ID的构建。其他方法包括:

定期重新调整应用程序的外观,以避免使用图像比较实现自动化。
有更多的验证码或其他安全方法来避免自动化。

嗯,最简单的方法是在发布版本时进行严格的Proguard配置

如果您假设有人将使用Appium+Espresso/UiAutmator创建一个脚本来与您的应用程序通信,请确保您的程序规则中没有以下内容:

-dontwarn com.google.android.material.**
-keep class com.google.android.material.** { *; }

-dontwarn androidx.**.
-keep class androidx.** { *; }
-keep interface androidx.** { *; }

-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
在这种情况下,你的应用程序根本不适合测试自动化

另外,如果您有自己的测试,请确保没有办法启动它们以用于发布APK。大多数情况下,我喜欢无害,但我见过一次:)