Build android app beginners

Android App Development Fundamentals for Beginners

Android is an operating system that is built basically for Mobile phones. It is based on the Linux Kernel and other open-source software and is developed by Google. It is used for touchscreen mobile devices such as smartphones and tablets. But nowadays these are used in Android Auto cars, TV, watches, camera, etc. It has been one of the best-selling OS for smartphones. Android OS was developed by Android Inc. which Google bought in 2005. Various applications (apps) like games, music player, camera, etc. are built for these smartphones for running on Android. Google Play store features more than 3.3 million apps. The app is developed on an application known as Android Studio. These executable apps are installed through a bundle or package called APK(Android Package Kit).

Android Fundamentals

1. Android Programming Languages

In Android, basically, programming is done in two languages JAVA or C++ and XML(Extension Markup Language). Nowadays KOTLIN is also preferred. The XML file deals with the design, presentation, layouts, blueprint, etc (as a front-end) while the JAVA or KOTLIN deals with the working of buttons, variables, storing, etc (as a back-end).

2. Android Components

The App components are the building blocks of Android. Each component has its own role and life cycles i.e from launching of an app till the end. Some of these components depend upon others also. Each component has a definite purpose. The four major app components are:

  • Activities
  • Services
  • Broadcast Receivers:
  • Content Provider:

Activities: It deals with the UI and the user interactions to the screen. In other words, it is a User Interface that contains activities. These can be one or more depending upon the App. It starts when the application is launched. At least one activity is always present which is known as MainActivity. The activity is implemented through the following.

Syntax:

To know more Activities please refer to this article: Introduction to Activities in Android

Services: Services are the background actions performed by the app, these might be long-running operations like a user playing music while surfing the Internet. A service might need other sub-services so as to perform specific tasks. The main purpose of the Services is to provide non-stop working of the app without breaking any interaction with the user.

Syntax:

To know more Services please refer to this article: Services in Android with Example

Broadcast Receivers: A Broadcast is used to respond to messages from other applications or from the System. For example, when the battery of the phone is low, then the Android OS fires a Broadcasting message to launch the Battery Saver function or app, after receiving the message the appropriate action is taken by the app. Broadcast Receiver is the subclass of BroadcastReceiver class and each object is represented by Intent objects.

Syntax:

To know more Broadcast Receivers please refer to this article: Broadcast Receiver in Android With Example

Content Provider: Content Provider is used to transferring the data from one application to the others at the request of the other application. These are handled by the class ContentResolver class. This class implements a set of APIs(Application Programming Interface) that enables the other applications to perform the transactions. Any Content Provider must implement the Parent Class of ContentProvider class.

Syntax:

To know more Content Provider please refer to this article: Content Providers in Android with Example

3. Structural Layout Of Android Studio

The basic structural layout of Android Studio is given below:

The above figure represents the various structure of an app.

Manifest Folder: Android Manifest is an XML file that is the root of the project source set. It describes the essential information about the app and the Android build tools, the Android Operating System, and Google Play. It contains the permission that an app might need in order to perform a specific task. It also contains the Hardware and the Software features of the app, which determines the compatibility of an app on the Play Store. It also includes special activities like services, broadcast receiver, content providers, package name, etc.

Java Folder: The JAVA folder consists of the java files that are required to perform the background task of the app. It consists of the functionality of the buttons, calculation, storing, variables, toast(small popup message), programming function, etc. The number of these files depends upon the type of activities created.

Resource Folder: The res or Resource folder consists of the various resources that are used in the app. This consists of sub-folders like drawable, layout, mipmap, raw, and values. The drawable consists of the images. The layout consists of the XML files that define the user interface layout. These are stored in res.layout and are accessed as R.layout class. The raw consists of the Resources files like audio files or music files, etc. These are accessed through R.raw.filename. values are used to store the hardcoded strings(considered safe to store string values) values, integers, and colors. It consists of various other directories like:

  • R.array :arrays.xml for resource arrays
  • R.integer : integers.xml for resource integers
  • R.bool : bools.xml for resource boolean
  • R.color :colors.xml for color values
  • R.string : strings.xml for string values
  • R.dimen : dimens.xml for dimension values
  • R.style : styles.xml for styles

Gradle Files: Gradle is an advanced toolkit, which is used to manage the build process, that allows defining the flexible custom build configurations. Each build configuration can define its own set of code and resources while reusing the parts common to all versions of your app. The Android plugin for Gradle works with the build toolkit to provide processes and configurable settings that are specific to building and testing Android applications. Gradle and the Android plugin run independently of Android Studio. This means that you can build your Android apps from within Android Studio. The flexibility of the Android build system enables you to perform custom build configurations without modifying your app’s core source files.

Basic Layout Can be defined in a tree structure as:

4. Lifecycle of Activity in Android App

The Lifecycle of Activity in Android App can be shown through this diagram:

States of Android Lifecycle:

  1. OnCreate: This is called when activity is first created.
  2. OnStart: This is called when the activity becomes visible to the user.
  3. OnResume: This is called when the activity starts to interact with the user.
  4. OnPause: This is called when activity is not visible to the user.
  5. OnStop: This is called when activity is no longer visible.
  6. OnRestart: This is called when activity is stopped, and restarted again.
  7. OnDestroy: This is called when activity is to be closed or destroyed.
Читайте также:  Лучшие платные читалки для андроид

To know more about Activity Lifecycle in Android Please refer to this article: Activity Lifecycle in Android with Demo App

Источник

A beginner guide to Android build files

Development is not easy and build system can be more confusing. I feel your pain.

The android project structure is not easy to adapt at first glance, especially if you have a multi-module project. This article aims to simplify an important aspect of Android project structure: build files. Is this article for you? Will it add value? Depends on:

  • If you are a new Android developer, buckle your belt. It surely will help
  • If you are one of those developers who click sync now whenever Android studio asks you; you definitely need this article

  • If you are experienced developer and comfortable with Android build files and know in and out, read for proofreading and revising. I will appreciate leaving a note on how to improve this article
  • You do not want to waste time on Social media and do not know what else to do

Section 1 Gradle

First thing first, Android Studio supports Gradle as its build automation system. Gradle is a nice tool and a detailed explanation is out of the scope of this article. You need to read books for that. Believe me, reading is good. For beginners, I will explain in a very basic way what it is. Experienced can skip this section.

If you are a software developer, you write code. You do not send your code to users. Any software you write in any platform, you need to perform some steps before you can release OR to convert in the form you can share with your users. In Java, it is a jar, Windows exe, Mac dmg, Android apk and so on. To convert your code into the required output, you follow certain steps. The steps can vary depending on the platform you work with. For example compilation, code stripping, deleting unused code, optimizing code, can be few steps before the final result.

Now, these steps are finite and sequential. Let’s say you can run each step with a command.

  • Add time logging in each method
  • Compile code
  • Strip unused code
  • ……

Either you can run these commands manually OR ask a computer to do for you. Whenever something is algorithmic in nature, automation is the right way to go. Gradle, my friend is just this, a tool/script to run the commands required to build the final binary (apk in Android).

Note:The code you write does not execute as it is. Indirectly you convert it by adding/stripping/changing/ optimizing before you release binary(final format).

Dependency

Your Android project does not suffice on its own. First of all, it is dependent on the Android classes and mostly Android support classes. 99% your project also depends on 3rd party libraries. It can be for HTTP, image loading, database, some native processing, and so-on. These are called dependencies: Well written utilities can be reused by other projects. The format of these dependencies also depends on the framework you are programming in. It can be an Android aar, Java Jar, Ruby gem and so on.

There are again two ways to use dependency:

First is manual and Second is automation. Manually you can take the dependency output file and drop in your project and then add to classpath so your tools can find them and your classes can use them. Every time a new version is released, you need to keep an eye. Not more than a few years back, developers were supposed to do it. It is just too tedious to do all this. Why waste time on duplicate and boring efforts when we can watch Star Wars 7th time. After all, we are developers.

Second and Better way is to ask the computer to do all this repetitive and boring job for us. We can tell the computer program what all dependencies we need and it will obey our command. It will fetch those output files and place it in the exact position required. No more errors and no more boring work. We can continue our interesting Gossip over coffee.

Summary Section 1

To convert your raw code into something executable, you need a few other libraries (dependencies) and you need to perform certain operations. The operations are also called tasks and they vary depending on the framework you work with. Automating this process of fetching dependencies and running required tasks to generate the executable is called automated build system. Gradle is just that.

Источник

Build and run your app

Android Studio sets up new projects to deploy to the Android Emulator or a connected device with just a few clicks. Once your app is installed, you can use Apply Changes to deploy certain code and resource changes without building a new APK.

To build and run your app, follow these steps:

    In the toolbar, select your app from the run configurations drop-down menu.

From the target device drop-down menu, select the device that you want to run your app on.

If you don’t have any devices configured, then you need to either connect a device via USB or create an AVD to use the Android Emulator.

Click Run .

Change the run/debug configuration

When you run your app for the first time, Android Studio uses a default run configuration. The run configuration specifies whether to deploy your app from an APK or an Android App Bundle, the module to run, package to deploy, activity to start, target device, emulator settings, logcat options, and more.

The default run/debug configuration builds an APK, launches the default project activity, and uses the Select Deployment Target dialog for target device selection. If the default settings don’t suit your project or module, you can customize the run/debug configuration, or even create a new one, at the project, default, and module levels. To edit a run/debug configuration, select Run > Edit Configurations. For more information, see Create and Edit Run/Debug Configurations.

Change the build variant

By default, Android Studio builds the debug version of your app, which is intended for use only during development, when you click Run.

To change the build variant Android Studio uses, select Build > Select Build Variant in the menu bar.

For projects without native/C++ code, the Build Variants panel has two columns: Module and Active Build Variant. The Active Build Variant value for the module determines which build variant the IDE deploys to your connected device and is visible in the editor.

Читайте также:  Как настроить телевизор киви андроид

Figure 1. The Build Variants panel has two columns for projects that do not have native/C++ code

To switch between variants, click the Active Build Variant cell for a module and choose the desired variant from the list field.

For projects with native/C++ code, the Build Variants panel has three columns: Module, Active Build Variant, and Active ABI. The Active Build Variant value for the module determines the build variant that the IDE deploys to your device and is visible in the editor. For native modules, the Active ABI value determines the ABI that the editor uses, but does not impact what is deployed.

Figure 2. The Build Variants panel adds the Active ABI column for projects with native/C++ code

To change the build variant or ABI, click the cell for the Active Build Variant or Active ABI column and choose the desired variant or ABI from the list. After you change the selection, the IDE syncs your project automatically. Changing either column for an app or library module will apply the change to all dependent rows.

By default, new projects are set up with two build variants: a debug and release variant. You need to build the release variant to prepare your app for public release.

To build other variations of your app, each with different features or device requirements, you can define additional build variants.

Conflicts in Android Studio’s Build Variants dialog

In Android Studio’s Build Variants dialog, you might see error messages indicating conflicts between build variants, such as the following:

This error does not indicate a build issue with Gradle – it is only indicating that the Android Studio IDE itself cannot resolve symbols between the variants of the selected modules.

For example, if you have a module M1 that depends on variant v1 of module M2 , but M2 has variant v2 selected in the IDE, you have unresolved symbols in the IDE. Let’s say that M1 depends on a class Foo which is only available in v1 . When v2 is selected, that class is not known by the IDE and it will fail to resolve it and show errors in the code of M1 .

These error messages appear because the IDE cannot load code for multiple variants simultaneously. In terms of your app’s build, however, the variant selected in this dialog will have no effect because Gradle builds your app with the source code specified in your Gradle build recipes, not based on what’s currently loaded in the IDE.

Build your project

The Run button builds and deploys your app to a device. However, to build your app to share or upload to Google Play, you’ll need to use one of the options in the Build menu to compile parts or all of your project. Before you select any of the build options listed in table 1, make sure you first select the build variant you want to use.

Table 1. Build options in the Build menu.

Builds an APK of all modules in the current project for their selected variant. When the build completes, a confirmation notification appears, providing a link to the APK file and a link to analyze it in the APK Analyzer.

If the build variant you’ve selected is a debug build type, then the APK is signed with a debug key and it’s ready to install. If you’ve selected a release variant, then, by default, the APK is unsigned and you must manually sign the APK. Alternatively, you can select Build > Generate Signed Bundle / APK from the menu bar.

Android Studio saves the APKs you build in project-name / module-name /build/outputs/apk/ .

Builds an Android App Bundle of all modules in the current project for their selected variant. When the build completes, a confirmation notification appears, providing a link to the app bundle and a link to analyze it in the APK Analyzer.

If the build variant you’ve selected is a debug build type, then the app bundle is signed with a debug key, and you can use bundletool to deploy your app from the app bundle to a connected device. If you’ve selected a release variant, then the app bundle is unsigned by default and you must manually sign it using jarsigner . Alternatively, you can select Build > Generate Signed Bundle / APK from the menu bar.

Android Studio saves the APKs you build in project-name / module-name /build/outputs/bundle/ .

Menu Item Description
Make Module Compiles all source files in the selected module that have been modified since the last build, and all modules the selected module depends on recursively. The compilation includes dependent source files and any associated build tasks. You can select the module to build by selecting either the module name or one of its files in the Project window.
Make Project Makes all modules.
Clean Project Deletes all intermediate/cached build files.
Rebuild Project Runs Clean Project for the selected build variant and produces an APK.
Build Bundle(s) / APK(s) > Build APK(s)
Build Bundle(s) / APK(s) > Build Bundle(s)
Brings up a dialog with a wizard to set up a new signing configuration, and build either a signed app bundle or APK. You need to sign your app with a release key before you can upload it to the Play Console. For more information about app signing, see Sign your app.

Note: The Run button builds an APK with testOnly=»true» , which means the APK can only be installed via adb (which Android Studio uses). If you want a debuggable APK that people can install without adb, select your debug variant and click Build Bundle(s) / APK(s) > Build APK(s).

For details about the tasks that Gradle executes for each command, open the Build window as described in the next section. For more information about Gradle and the build process, see Configure Your Build.

Monitor the build process

You can view details about the build process by clicking View > Tool Windows > Build (or by clicking Build in the tool window bar). The window displays the tasks that Gradle executes in order to build your app, as shown in figure 3.

Figure 3. The Build output window in Android Studio

    Build tab: Displays the tasks Gradle executes as a tree, where each node represents either a build phase or a group of task dependencies. If you receive build-time or compile-time errors, inspect the tree and select an element to read the error output, as shown in figure 4.

Figure 4. Inspect the Build output window for error messages

  • Sync tab: Displays tasks that Gradle executes to sync with your project files. Similar to the Build tab, if you encounter a sync error, select elements in the tree to find more information about the error.
  • Restart: Performs the same action as selecting Build > Make Project by generating intermediate build files for all modules in your project.
  • Toggle view: Toggles between displaying task execution as a graphical tree and displaying more detailed text output from Gradle—this is the same output you see in the Gradle Console window on Android Studio 3.0 and earlier.
  • If your build variants use product flavors, Gradle also invokes tasks to build those product flavors. To view the list of all available build tasks, click View > Tool Windows > Gradle (or click Gradle in the tool window bar).

    If an error occurs during the build process, Gradle may recommend some command-line options to help you resolve the issue, such as —stacktrace or —debug . To use command-line options with your build process:

    1. Open the Settings or Preferences dialog:
      • On Windows or Linux, select File >Settings from the menu bar.
      • On Mac OSX, select Android Studio >Preferences from the menu bar.
    2. Navigate to Build, Execution, Deployment >Compiler.
    3. In the text field next to Command-line Options, enter your command-line options.
    4. Click OK to save and exit.

    Gradle applies these command-line options the next time you try building your app.

    Apply Changes

    In Android Studio 3.5 and higher, Apply Changes lets you push code and resource changes to your running app without restarting your app—and, in some cases, without restarting the current activity. This flexibility helps you control how much of your app is restarted when you want to deploy and test small, incremental changes while preserving your device’s current state. Apply Changes uses capabilities in the Android JVMTI implementation that are supported on devices running Android 8.0 (API level 26) or higher. To learn more about how Apply Changes works, see Android Studio Project Marble: Apply Changes.

    Requirements

    Apply Changes actions are only available when you meet the following conditions:

    • You build the APK of your app using a debug build variant.
    • You deploy your app to a target device or emulator that runs Android 8.0 (API level 26) or higher.

    Use Apply Changes

    Use the following options when you want to deploy your changes to a compatible device:

    Apply Changes and Restart Activity

    Attempts to apply both your resource and code changes by restarting your activity but without restarting your app. Generally, you can use this option when you’ve modified code in the body of a method or modified an existing resource.

    You can also perform this action by pressing Ctrl+Alt+F10 (or Control+Shift+Command+R on macOS).

    Apply Code Changes

    Attempts to apply only your code changes without restarting anything. Generally, you can use this option when you’ve modified code in the body of a method but you have not modified any resources. If you’ve modified both code and resources, use Apply Changes and Restart Activity instead.

    You can also perform this action by pressing Ctrl+F10 (or Control+Command+R on macOS).

    Run

    Deploys all changes and restarts the app. Use this option when the changes that you have made cannot be applied using either of the Apply Changes options. To learn more about the types of changes that require an app restart, see Limitations of Apply Changes.

    Enable Run fallback for Apply Changes

    After you’ve clicked either Apply Changes and Restart Activity or Apply Code Changes, Android Studio builds a new APK and determines whether the changes can be applied. If the changes can’t be applied and would cause Apply Changes to fail, Android Studio prompts you to Run your app again instead. However, if you don’t want to be prompted every time this occurs, you can configure Android Studio to automatically rerun your app when changes can’t be applied.

    To enable this behavior, follow these steps:

    Open the Settings or Preferences dialog:

    • On Windows or Linux, select File > Settings from the menu bar.
    • On macOS, select Android Studio > Preferences from the menu bar.

    Navigate to Build, Execution, Deployment > Deployment.

    Select the checkboxes to enable automatic Run fallback for either of the Apply Changes actions.

    Click OK.

    Platform-dependent changes

    Some features of Apply Changes depend on specific versions of the Android platform. To apply these kinds of changes, your app must be deployed to a device running that version of Android (or higher).

    Type of change Minimum platform version
    Adding a method Android 11

    Limitations of Apply Changes

    Apply Changes is designed to speed up the app deployment process. However, there are some limitations for when it can be used. If you encounter any issues while using Apply Changes, file a bug.

    Code changes that require app restart

    Some code and resource changes cannot be applied until the app is restarted, including the following:

    • Adding or removing a field
    • Removing a method
    • Changing method signatures
    • Changing modifiers of methods or classes
    • Changing class inheritance
    • Changing values in enums
    • Adding or removing a resource
    • Changing the app manifest
    • Changing native libraries (SO files)

    Libraries and plugins

    Some libraries and plugins automatically make changes to your app’s manifest files or to resources that are referenced in the manifest. These automatic updates can interfere with Apply Changes in the following ways:

    • If a library or plugin makes changes to your app’s manifest, you can’t use either Apply Code Changes or Apply Changes and Restart Activity and have to restart your app before you can see your changes.
    • If a library or plugin makes changes to your app’s resource files, you can’t use Apply Code Changes , and you must use Apply Changes and Restart Activity to see your changes.

    You can avoid these limitations by disabling all automatic updates for your debug build variants.

    For example, Crashlytics updates app resources with a unique build ID during every build, which prevents you from using Apply Code Changes and requires you to restart your app’s activity to see your changes. You can disable this behavior so that you can use Apply Code Changes alongside Crashlytics with your debug builds.

    Code that directly references content in an installed APK

    If your code directly references content from your app’s APK that’s installed on the device, that code can cause crashes or misbehave after clicking Apply Code Changes . This behavior occurs because when you click Apply Code Changes, the underlying APK on the device is replaced during installation. In these cases, you can click Apply Changes and Restart Activity or Run , instead.

    Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.

    Источник

    Читайте также:  Шутер про войну андроид
    Оцените статью