Mobile devices are constrained by the limited capacities of their small batteries. However, profiling the energy consumed in the task execution is crucial to help the developers to build energy efficient applications. Therefore, the major challenge in the profiling approach is to accurately estimating the energy consumed for an application by the hardware components, such as CPU, memory, storage unit, and network interfaces. In this work, we develop and validate hardware and software profiling models and procedures.