├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── all.log ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── cn │ │ └── zarathustra │ │ └── checkvirtualapk │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── cn │ │ │ └── zarathustra │ │ │ └── checkvirtualapk │ │ │ ├── CheckVirtual.java │ │ │ └── MainActivity.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── cn │ └── zarathustra │ └── checkvirtualapk │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── testcase ├── com.excelliance.dualaid-1.apk ├── com.fineclouds.dualspace-1.apk ├── com.jiubang.commerce.gomultiple-1.apk ├── com.lbe.parallel-1.apk ├── com.xh.fairy-1.apk └── io.virtualapp-1.apk /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 1.8 38 | 39 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Check_VirtualAPK 2 | A library for check whether your app run in a virtual project. 3 | 4 | 检测应用是否被多开,接入很简单,直接拷贝Java类CheckVirtual,调用isRunInVirtual方法即可 5 | 6 | 以下为在Android 6.0 三星Note 5,Android 7.0 一加5,Android 4.4 Sony Lt55上面测试的结果 7 | 8 | | 多开APP应用 | 测试结果 | 9 | | --- | :---:| 10 | |Go双开 |测试通过| 11 | |双开精灵|测试通过| 12 | |VirtualApp |测试通过| 13 | |平行空间|测试通过| 14 | |双开助手|测试通过| 15 | |双开精灵|测试通过| 16 | 17 | 原理可见:[Android虚拟机多开检测](http://www.jianshu.com/p/216d65d9971e) -------------------------------------------------------------------------------- /all.log: -------------------------------------------------------------------------------- 1 | Option -v needs an argument 2 | Usage: logcat [options] [filterspecs] 3 | options include: 4 | -s Set default filter to silent. Equivalent to filterspec '*:S' 5 | -f , --file= Log to file. Default is stdout 6 | -r , --rotate-kbytes= 7 | Rotate log every kbytes. Requires -f option 8 | -n , --rotate-count= 9 | Sets max number of rotated logs to , default 4 10 | -v , --format= 11 | Sets the log print format, where is: 12 | brief color epoch long monotonic printable process raw 13 | tag thread threadtime time uid usec UTC year zone 14 | -D, --dividers Print dividers between each log buffer 15 | -c, --clear Clear (flush) the entire log and exit 16 | if Log to File specified, clear fileset instead 17 | -d Dump the log and then exit (don't block) 18 | -e , --regex= 19 | Only print lines where the log message matches 20 | where is a regular expression 21 | -m , --max-count= 22 | Quit after printing lines. This is meant to be 23 | paired with --regex, but will work on its own. 24 | --print Paired with --regex and --max-count to let content bypass 25 | regex filter but still stop at number of matches. 26 | -t Print only the most recent lines (implies -d) 27 | -t '