需求:
游戏中要做反外挂处理,尤其是针对按键精灵等挂机软件,不管是真机还是模拟器都有玩家使用挂机软件。
测试过程:
1.参考 https://blog.csdn.net/cbbbc/article/details/59058140
2.下载Sample GitHub项目在这里.
3.新建AndroidStudio Demo测试,此处使用的AS版本为3.2.
4.导入下载的Sample里的 AndroidProcesses-master\library,
拷贝AndroidProcesses-master\gradle\gradle-mvn-push.gradle 到Demo相同目录下
拷贝Sample里的 AndroidProcesses-master\demo\src\main\java\com\jaredrummler\android\processes\sample\utils 文件夹到新建的Demo中,AndroidAppProcessLoader.java没有用到,删掉。
在OnCreate或者点击响应的地方使用如下调用方式即可:
List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();
for (AndroidAppProcess process:processes) {
String name = process.name;
String packageName = process.getPackageName();
Boolean bForeground = process.foreground;
String appName = Utils.getName(activity,process);
Log.d("===AppName : ",""+appName);
Log.d("Name : ",""+name);
Log.d("PackageName : ",""+packageName);
Log.d("Foreground : ",""+bForeground);
}
遇到的问题:
跑Sample时可以正常检测到所有运行的任务,但是自己的Demo只能检测到系统中运行的任务,并没有检测到正在运行的挂机软件。对比以后发现配置不同,尝试修改以下几个参数,原本是 28,改为 25,
compileSdkVersion 25
buildToolsVersion "25.0.2"
targetSdkVersion 25
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support.constraint:constraint-layout:1.1.3'
compile 'com.android.support:design:25.0.0'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:1.0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.2'
compile project(':library')
}
Project的build.gradle版本改为:
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3' //3.2.0
}
然后AS报了几个奇怪的错,经查询发现需要使用其他NDK版本,遂更改如下,然后测试发现可以检测到正确的运行任务了。