Apps can be built using Native code for each platform (iOS, Android, etc.) - each has its own programming language and related tools.
Building a unique version for each device provides the best quality but can be slow and expensive.
Another approach is to build the app as a custom responsive website set for mobile device screen sizes. Then package the code with some customization for Android and iOS. We use a tool called Adobe PhoneGap to package the code and launch mobile apps.