Artist Usage Guide

As described in this post, recent updates to ARTist’s internal workings require an update of this documentation. This note will vanish as soon as the new documentation is published.
Until that, you can still use the description below to some extend, but expect some things to not work anymore.

How to install and use ARTist.

ARTist Deployment

All of ARTist’s functionality gets bundled and deployed on the device with the ArtistGUI android application.

ArtistGUI’s source folders contains build and copy scripts for the building and bundling of art’s dex2oat compiler, that contains all of ARTist’s functionality.

ArtistGUI Usage

  1. Root your device.
  2. Compile ARTist, ArtistGUI and the CodeLib.
  3. Install ArtistGUI on the device
    • ArtistGUI bundles the artist-enhanced dex2oat compiler for one or multiple androdi versions.
      (optional) It also contains the CodeLib.
    • Configure ArtisGUI’s settings
    • Choose Codelib (either from the assets or import on from the SD card.)
  4. Select an app in the application list that you want to inject your code into.
    Just tap on it an the compilation process starts.
    • Wait until the recompilation with code injection finishes.
  5. Start the recompiled app and see your changes.

ArtistGUI APK Content

  • Graphical User Interface
    • Selecting apps for compilation
    • Compilation dialog with normal and detailed compilation progress.
  • ARTist Compilation Service
    • Start ARTist’s recompilation with an Intent.
  • Settings: Configurable settings for the compilation process.
    • CodeLib selection and more.
  • dex2oat: one executable (+ supporting libraries) per Android version.
    ArtistGUI can ship dex2oat for multiple android versions.
    Contains ARTist’s functionality, injection definitions, etc.
    Contains the generated codelib.h/.cc files.
  • codelib.apk: You can bundle your codelib in the assets/` folder of ArtistGUI or import from your phones filesystem, in ArtistGUI’s settings.

Logging

Artist also spawns a lot of log messages during the recompilation process.

Check the artist LogTags:

  • dex2artist
  • ArtistGui

The injected app also logs via the CodeLib’s Logtag, default:

  • ArtistCodeLib

You can configure all of dex2oat’s logtags and loglevels in the C++ methods: art::ArtistLog::SetupArtistLogging() and art::MaybeOverrideVerbosity().

If you enabled full logging in dex2oat/artist (enabling logtag artistd), it is advised to increase android LogBuffer size to the maximum in the Developer Options.

Go to: Settings -> Developer options -> Log buffer sizes