Choosing the correct project type

When using VTS, you will find that there are four different project types to choose from. Which project type you choose will depend on the kind of work you want to do.

The four types are:
  1. Apk-Project
  2. Jar-Project
  3. M10-Project
  4. Boot-Project

 I will explain below when it is best appropriate to use each type.

 
Apk-Projects:

APK projects pretty much include the full functionality. They should be used when editing files such as Smali, XML or embedded images within an APK. For example, SystemUI or framework-res. If you are working with proprietary HTC APKs then you have the additional option to decompile m10 within the APK at the same time as decompiling XML, smali and resources. To do this click on the “m10-Engine” tab and check “Use m10 tools to decompile m10 files”. For example of you want to edit an HTC skin, then you would select to decompile m10.

Jar-Projects:

You should choose the Jar-Project if you need to edit Smali within a .jar file. You can also select to generate java source code from the classes.dex if needed. To do this you need to check the ‘Generate Java Code’ box on the Import tab when you are creating your project.

M10-Projects:

Use this type of project when you plan to only work with m10 files within the target APK (x10 and decompiled m10 images). The m10 project does not decompile the regular resources (XML, pngs, smali) within the APK, so if you intend to do a mix of work use the APK project instead with m10 decompile selected.

The m10 file format is only used in proprietary HTC’s apks, so if you are on a Samsung device then you will never need to use this type of project.

Common APKs that contain m10 files are fusion.apk, Idlescreen_Base.apk, Idlescreen_xyz.apk and Rosie.apk.

Boot-Projects

VTS can easily unpack and repack boot images (eg. boot.img, recovery.img). You can modify all files (eg. the ramdisk or the zImage), add new files or remove not needed files.
The Boot-Project can be used to modify existing kernels or port over kernels from different devices.

That about sums it up. Now choose a project type that best suits the work you will be doing and get started!