# RELEASE NOTES - Shield for Android, Version 6.5.0, 2024-02-14
## Highlights of Version 6.5.0
* New features and changed behavior:
- Google Play Games Emulator support.
- Extended the ShieldSDK-callback for untrusted installer apps.
- No longer distrust system keyboards on rooted devices.
- Shielder command line option to check if an application is shielded.
- Removed deprecated APIs.
* Improvements:
- Shield runtime performance improvements.
- Improved rooting detection.
- Improved hooking framework detection.
- Improved native code hook detection.
- Improved emulator detection.
- Improved adb status check.
- Improved Shielder class name obfuscation.
* Bug fixes and improvements.
## New features and changed behavior
### Google Play Games Emulator support
To allow running the application on Google Play Games on PC (a gaming emulator
provided by Google), enable the Shield configuration option
"allowGooglePlayGamesEmulator" in your `config.xml` file. For example:
```xml
```
_(Resolves issue SHAND-3550)_
### Extended the ShieldSDK-callback for untrusted installer apps
Shield now reports all found untrusted installer apps in the ShieldSDK
callbacks.
_(Resolves issue SHAND-3993)_
### No longer distrust system keyboards on rooted devices
Shield used to distrust system keyboards on rooted devices. This made it more
complicated for applications that didn't care about running on rooted devices
but did care about keyboards. That is, with a Shield configuration that did not
exit on detecting a rooted device, but did exit if an untrusted keyboard was
used, you had to add the application signers for all keyboards that were
pre-installed by mobile vendors, because Shield didn't trust them anymore.
Thus, in the past, your `config.xml` file might have looked like the following
example:
```xml
```
However, distrusting system keyboards on rooted devices does not add much extra
security. Thus, from now on, you no longer have to add the signers of the
pre-installed keyboards.
If you want to protect against running on rooted devices, then you can enable
exit on rooting with the following configuration:
```xml
```
### Shielder command line option to check if an application is shielded
Shielder now has the command line option `--check-app` to check if an
application is shielded. For example:
```bash
$ java -jar Shielder.jar --check-app my-app.apk
* Shield not found.
```
Or if the application is shielded:
```bash
$ java -jar Shielder.jar --check-app my-shielded-app.apk
Shield version 6.5.0 found.
```
## Removed deprecated APIs
The deprecated feature `ForegroundOverrideData` has been removed and is no
longer supported.
## Improvements
### Shield runtime performance improvements
Improved startup performance. Shield moved the execution of slow security
checks from the initial startup to a background thread and optimized the
remaining code. Thus, the protected application will start a bit faster than with
previous versions of Shield.
_(Resolves issues SHAND-3766, SHAND-3895, etc.)_
### Improved rooting detection
* Improved detection of devices rooted with rooting toolkits like Magisk
Manager, Magisk Hide, KernelSU, and Zygisk.
### Improved hooking framework detection
* Improved detection of the LSPosed framework.
* Improved detection of the MultiApp framework.
* Improved detection of the Riru framework.
* Improved detection of the XPosed framework.
* Improved detection of Frida Stalker, a code tracer. Detection for code tracers
can be enabled with the following `config.xml` configuration:
```xml
```
If a code tracer is detected, Shield terminates the application.
_Note:_ In a future release, Shield will enable this option by default and later
remove the configuration option.
### Improved native code hook detection
Shield has been improved on detecting hooking frameworks that inject hooks into
the application's native libraries.
As part of the native code hook detection, Shield can be configured to verify the
native libraries of your app. For example, your `rules.cfg` file can use
the following line:
```cfg
verify "lib/arm64-v8a/libmy-native.so";
```
The Shield native library is always verified. Other native libraries of the
application need to be added explicitly.
In some situations, Shield encountered a race condition when the application
loaded several native libraries from different threads. This could have caused a
false positive. The race condition is now properly handled.
### Improved emulator detection
Shield improved the detection of the mogume cloud emulator and BlueStacks
emulator.
_(Resolves issues SHAND-3937 and SHAND-3804)_
### Improved adb status detection
Shield now detects if ADB has been enabled with tools like the "WADB - Wireless
ADB enabler". That tool can enable ADB without changing the Android System
settings.
See https://play.google.com/store/apps/details?id=moe.haruue.wadb&hl=en&gl=US
_(Resolves issue SHAND-3973)_
### Improved Shielder class name obfuscation
#### Obfuscating Navigation Actions
If a navigation component uses an `` element with an `app:argType`, and
the class name of that `app:argType` is obfuscated, then Shielder now correctly
updates the resource file with the obfuscated class names. Without this fix, the
application would crash when trying to use the action.
For example:
```xml
```
See "Use Navigation actions and Fragments":
https://developer.android.com/guide/navigation/design/actions.
#### Obfuscating Navigation Dialogs
If a navigation component uses a `