Skip to content

Configurations

Rafael Acosta edited this page Mar 6, 2021 · 7 revisions

You can easily configure our library behaviour at build time by using our gradle extension on your app module's build.gradle. This configuration also affect our plugin behaviour and cleaning your app's data will restore to this values.

apply plugin: 'es.rafaco.inappdevtools'

inappdevtools {
    enabled = true
    notes = 'This compilation fix the following issues:..'
    teamEmail = '[email protected]'
}

All available properties with descriptions can be found in next section.

You can also override your build configuration at run time from our UI (Overlay toolbar > More > Setting) or programmatically calling us from your sources. Runtime values will be lost when cleaning your app data, restoring the build ones from our gradle extension.

Iadt.getConfig().setBoolean(BuildConfigField.ENABLED, false);
Iadt.restartApp();

Available flags

Build flags

These are the most important ones as they configure our plugin behaviour and can enable/disable our library on your compilations.

Property Type Default Description
enabled boolean true Disable all and simulate the no-op library and plugin
enabledOnRelease boolean false Force enabling our library for release builds of your app. Warning, read Exposed sources disclaimer
debug boolean false Enable debug mode for the library. It print extra logs and include our sources to your compilation

Customization flags

Following flags are only using on runtime and allows to improve the experience of internal users.

Property Type Default Description
notes String null Compilation notes to show on welcome dialog, build and team screen
teamName String null Short name for your team, shown in home and team screen
teamDesc String null Long text about your team or anything else that you want to shown in team screen
teamEmail String null Default email to use for reports
teamLinks Map[String:String] null Collection of links to shown in team screen. Use Groovy map of name:url

Build feature switch flags

Following flags allows to enable/disable some of our features excluding them from build. They affect your compilation and can not be enabled in runtime.

Property Type Default Description
sourceInclusion boolean true Disable including this module sources in your apk. Read Exposed sources disclaimer
sourceInspection boolean true Disable source features and source inclusion. Read Exposed sources disclaimer
networkInspection boolean true Disable network interceptor and inspection feature. Auto disabled if Pandora startup failed.

Runtime feature switches

Following flags allows to enable/disable some of our features at runtime.

Property Type Default Description
viewInspection boolean true Disable view inspection feature. Auto disabled if Pandora startup failed.
storageInspection boolean true Disable storage inspection features. Auto disabled if Pandora startup failed.
overlayEnabled boolean true Disable our overlay interface
invocationByShake boolean true Disable opening our UI on device shake
invocationByIcon boolean true Enable a permanent overlay icon to open our UI
invocationByNotification boolean false Show a permanent notification to open the UI. Warning: it currently use a foreground service so your app will not be killed on background
callDefaultCrashHandler boolean false Propagate unhandled exceptions to the default handler (for Crashlytics and similar)
injectEventsOnLogcat boolean true Inject IadtEvents on logcat to see them on the standard Logcat output.

Usages

Debug vs Release compilation

Our goal is to enhance your internal compilation without interfering in your production compilations. Our default configuration assume that your debug compilations are for internal use and your release ones are for production, but you can adjust it.

You can disable our library and plugin in your debug builds by setting enabled = false in configuration or using our noop library. Read more.

We have a release protection mechanism to auto-disable everything on your release builds even if you forget to use our noop artifact or if your configuration have enabled = true. On release builds, our plugin will not perform any of their tasks and our androidx and support libraries will behave like the noop one.

To enable our library and plugin in your release builds you have to explicitly override our protection mechanism by setting enabledOnRelease = true in configuration. Read more.

1. Enabled

This is our main on/off switch. Setting enabled = false will disable our plugin and our library in your compilations.

TODO: Show how to redefine it per variant

2. Enabled on release

You can disable our release protection mechanisms and enable our library in your release builds, which can be useful for beta versions or internal distributions using release builds. To do so, include enabledOnRelease = true in your configuration.

Remember that you also need to stop using our noop artifact in your release dependencies. Replace it by any of our operational ones: androidx or support.

Source inclusion and Source Inspection

When this library is enabled, your source code get exposed to anyone who get your APK. It can be navigate and visualize throw our UI and someone could also extract them un-compiled from your APK file.

If you don't want to show all or some of your proprietary sources in your internal builds, you have few options:

  • (TODO) Exclude concrete source files by configuration. Useful for specific files with sensible information like passwords, api keys,...
  • Disable source inclusion by configuration, using sourceInclusion = false. Your apk will not include your sources but assets inspection will be available in our overlay.
  • Disable source inspection by configuration, using sourceInspection = false. Your apk will not include your sources and our interface will not show your assets.
  • Disable our library by configuration, using enabled = false. Your apk will not include your sources and all our features will be disabled but in your apk.
  • Disable our library by using the noop dependency. No source included, all disabled and with minimal apk size increase.

Disabling source inclusion or source inspection you also lost the following features: browse sources, view source, share source and stacktrace navigation throw your source lines.