Programming language: Groovy
License: Apache License 2.0
Tags: Injector    
Latest version: v1.3.1

SwissKnife alternatives and similar packages

Based on the "Injector" category.
Alternatively, view SwissKnife alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SwissKnife or a related project?

Add another 'Injector' Package


SwissKnife Maven Central

Join the chat at https://gitter.im/Arasthel/SwissKnife

A multi-purpose Groovy library containing view injection and threading for Android using annotations. It's based on both ButterKnife and AndroidAnnotations.

With SwissKnife you can:

  • Inject views dynamically on any Object as long a you have a View to find them. No more findViewById and you don't have to extend any classes.
  • Add callback methods to several actions using @OnClick, @OnItemClick, etc.
  • Execute methods in the UI Thread or a background one using @OnUIThread and @OnBackground.
  • Make your variables persistent across state changes without messing with onSaveInstanceState.
  • Make anything Parcelable with the @Parcelable annotation - which can be used with @SaveInstance to automatize data persistance. NO MORE PARCELABLES! YAY!
  • Inject resources into your classes with @Res annotations (@StringRes, @AnontationRes, etc.).
  • Read intent extras automatically with @Extra annotation.

You can see an example here:

class MyActivity extends Activity {

  String reallyImportantMessage

  String apiKey

  public String myString;

  public void onButtonClicked(Button button) {
    Toast.makeText(this, "Button clicked", Toast.LENGTH_SHOT).show();

  public void doSomeProcessing(URL url) {
    // Contents will be executed on background

    protected void onCreate(Bundle savedInstanceState) {
        // This must be called for injection of views and callbacks to take place

        // This must be called for saved state restoring
        SwissKnife.restoreState(this, savedInstanceState);

        // This mus be called for automatic parsing of intent extras


I'd really want to thank:

  • Mario García for his help on the new GH-Pages based documentation.
  • Dexafree for adding @SaveInstance annotation and helping with the testing.
  • Eugene Kamenev for adding DSL functionality to android-dsl branch.
  • Karol for injection on any object.
  • Andrew Reitz for keeping the build files up to date.
  • Pavel for his resource injection AST transforms.

You all make SwissKnife the great tool it is!


If you want to learn more, you can check Swissknife's docs page.

It contains info about the install instructions, all the annotations, DSLs, configurations, etc.

You can find all the releases and their changes here: RELEASES

Using it

To use SwissKnife you must use Groovy on your Android project as the code generation is done using AST processing, which is a Groovy feature. You can learn how to do that using this plugin on the wiki pages.

Once your project App Module is configured to use Groovy you can add this library as a dependency cloning it with git clone or as a maven library on the build.gradle of your App Module:

dependencies {
    compile "com.arasthel:swissknife:1.4.0"

If you want SwissKnife to update automatically, you could just type:

dependencies {
    compile "com.arasthel:swissknife:+"

But make sure you remember to clear Gradle's cache to get the latest version.

Also, there is an IntelliJ IDEA plugin compatible with Android Studio that lets you auto-generate the annotations and compatible method declarations.

IDEA plugin


SwissKnife is licensed under Apache v2 License, which means that it is Open Source and free to use and modify.

Copyright 2014 Jorge Martín Espinosa (Arasthel)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

*Note that all licence references and agreements mentioned in the SwissKnife README section above are relevant to that project's source code only.