--- title: "Replace source code" url: https://docs.catalyst.zoho.com/en/tutorials/zcdrive/replace-source-code/ description: "Build an Android file storage mobile app using Android Studio, and associate it with a Catalyst project using Catalyst Android SDK to store files securely in the project's Stratus bucket." last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Android SDK" url: /en/sdk/android/v2/overview --- # Replace the Source Code and Resource Files Next, let's update the source code of the ZCDrive app and its resource files. To make this easy, we have given you a link to the Git repository that contains the code for the necessary modules. You will simply have to replace your files with the given files. 1. Navigate to `ZCDrive > app > src > main` in your Android project directory from your system. 2. Delete the following directories and file in the main folder: * `java/` * `res/` * `AndroidManifest.xml` ![files-replace](https://catalyst-docs-development.zohostratus.in/images/tutorials/zcdrive/files-replace.webp) 3. Download the `java/` and `res/` directories, and the `AndroidManifest.xml` file from **[this Git repo](https://github.com/catalystbyzoho/tutorial-zcdrive-android)**. 4. Paste the downloaded files in the `main` folder. The source code and resources for the app are now updated. Let's take a quick look at the code of the ZCDrive app. > **Note:** Please go through the source code and the comments as you read through these points to make sure you fully understand them. * The `res` folder contains the [app's standard resources](https://developer.android.com/guide/topics/resources/providing-resources) optimized for different device configurations in type-specific individual directories. These resources include various XML files that define the layouts, views, bitmaps, and more. * The `[AndroidManifest.xml](https://developer.android.com/guide/topics/manifest/manifest-intro)` file contains crucial information about the app that is communicated to the build tools, the Android OS, and Google play. For example, it declares the app's components, permissions, and the hardware and software requirements of the target device for the app to run on. * The `assets` directory we created contains the `app\_configuration\_development.properties` file that was downloaded after registering the app in Catalyst. * The `java` directory contains the actual source code of the app in the form of various Kotlin files: * `Initialization.kt`: Contains the startup logic for the creation of the main activity. * `Signup.kt`: Defines the logic and the layout for the signup and login activities in the app. The `registerUser()` method fetches the details of a new user, such as their name and email address, during the signup and creates a new user instance through [Catalyst Authentication](https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/). * `MainActivity.kt`: The `[Activity](https://developer.android.com/guide/components/activities/intro-activities)` class informs the Android system to invoke specific callback methods in the `Activity` instance for the various stages of the app's lifecycle. `MainActivity` defines methods to initiate login and signup in the app. When you build and run your app, the system launches an instance of this `Activity` and loads its layout. * `HomeActivity.kt`: Contains methods involved in defining the app's home activity, such as for loading the home page after the authentication check, setting values of the file items to the `RecyclerView` container for displaying the files, fetching the metadata of the files from the Data Store through a `fileItem` object and rendering them in the view, rendering the view after the files are deleted, the user logout, and more. * `UploadDialog.kt`: Handles the file upload activity in the app. The file is uploaded to the configured bucket in the Stratus. A new row is created in the Data Store, and the file's metadata is extracted and set to the row's columns. An object for the `fileItem` class that contains the file's metadata is then created, and the file item is rendered in the `HomeActivity`. * `UserFileDownloadManager.kt`: Handles the file download activity in the app. When the download is initiated by the user, the file in the Stratus bucket is referred to by an instance, and it is fetched and stored in a temporary file path. `fileOutputStream` downloads the file from the path. * `DeleteDialog.kt`: Handles the file deletion activity. A file instance is created to refer to the file in the Stratus bucket, and the file is deleted using the `file.delete()` method. The row that stores the file's metadata is also fetched using a Data Store table instance, and the row is deleted from the table. * The `LinearViewAdapter` and the `GridViewAdapter` define the rendering of the file items in the adapters of the app's `LinearView` and `GridView` respectively. * `PreviewFile.kt`: Defines the methods for previewing a file in the app, after checking for permissions. The `previewFile()` method fetches the file instance from Stratus and opens a preview. The `java` directory also contains sub-directories that define instrumented Android tests and independent unit tests of the app, which we will not be performing.