ساخت برنامه اندروید با سی‌شارپ

ساخت برنامه اندروید با سی‌شارپ، آموزش NET MAUI، آموزش سی شارپ اندروید، اندروید 1404/8/26
نویسنده: مدرس بهمن آبادی

ساخت برنامه اندروید با سی‌شارپ

ساخت اندروید با سی شارپ

مقدمه: چرا سی‌شارپ برای توسعه اندروید؟

در دنیای توسعه اپلیکیشن‌های موبایل، اغلب تصور می‌شود که جاوا و کاتلین تنها گزینه‌های موجود برای توسعه اندروید هستند. اما با پیشرفت تکنولوژی‌های مایکروسافت، امروزه سی‌شارپ به یک انتخاب قدرتمند و کارآمد برای ساخت اپلیکیشن‌های اندرویدی تبدیل شده است.

مزایای استفاده از سی‌شارپ برای اندروید:

  • اشتراک‌گذاری کد بین پلتفرم‌های مختلف

  • دسترسی به کتابخانه‌های غنی .NET

  • پشتیبانی از الگوهای مدرن برنامه‌نویسی مانند MVVM

  • ابزارهای توسعه قدرتمند ویژوال استودیو

تکنولوژی‌های موجود برای توسعه اندروید با سی‌شارپ

۱. .NET MAUI (Multiform App UI)

جدیدترین و توصیه‌شده‌ترین تکنولوژی

  • پشتیبانی از چندپلتفرمی (اندروید، iOS, ویندوز، macOS)

  • تک کدبیس برای تمام پلتفرم‌ها

  • پشتیبانی رسمی از مایکروسافت

۲. Xamarin.Android

تکنولوژی پایدار و اثبات‌شده

  • دسترسی مستقیم به APIهای اندروید

  • عملکرد عالی

  • جامعه کاربری بزرگ

برای یادگیری برنامه نویسی از 0 تا 100 دوره جامع برنامه نویسی را مشاهده نمایید.

شروع کار با .NET MAUI

پیش‌نیازها:

  • ویژوال استودیو ۲۰۲۲ (نسخه ۱۷.۳ یا بالاتر)

  • .NET SDK 7.۰ یا بالاتر

  • Android SDK (به طور خودکار نصب می‌شود)

نصب و راه‌اندازی:

# بررسی نسخه .NET

dotnet --version

# ایجاد پروژه جدید MAUI
dotnet new maui -n MyFirstMauiApp

# اجرای پروژه روی شبیه‌ساز
dotnet build -t:Run -f net7.0-android

ساخت اولین اپلیکیشن اندروید با سی‌شارپ

مرحله ۱: ایجاد پروژه

  1. ویژوال استودیو را باز کنید

  2. Create a new project.NET MAUI App

  3. نام پروژه را وارد کنید (مثلاً MyAndroidApp)

مرحله ۲: درک ساختار پروژه

MyAndroidApp/
├── Platforms/
│   └── Android/
├── Resources/
├── Views/
├── ViewModels/
└── Models/

مرحله ۳: کدنویسی صفحه اصلی

MainPage.xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Class="MyAndroidApp.MainPage"
             xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

    <ScrollView>
        <VerticalStackLayout Spacing="25" Padding="30">

            <Label x:Name="WelcomeLabel"
                Text="به اپلیکیشن من خوش آمدید!"
                FontSize="32"
                HorizontalOptions="Center" />

            <Button x:Name="CounterButton"
                Text="کلیک کن!"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />

            <Entry x:Name="NameEntry"
                Placeholder="نام خود را وارد کنید"
                HorizontalOptions="Fill" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

MainPage.xaml.cs:

using Microsoft.Maui.Controls;

namespace MyAndroidApp
{
    public partial class MainPage : ContentPage
    {
        private int _count = 0;

        public MainPage()
        {
            InitializeComponent();
        }

        private void OnCounterClicked(object sender, EventArgs e)
        {
            _count++;
            CounterButton.Text = $"تعداد کلیک‌ها: {_count}";

            if (_count % 10 == 0)
            {
                DisplayAlert("تبریک!", $"شما به {_count} کلیک رسیدید!", "OK");
            }
        }
    }
}

کار با APIهای اختصاصی اندروید

دسترسی به سخت‌افزار دستگاه:

using Microsoft.Maui.ApplicationModel;
using Microsoft.Maui.Devices.Sensors;

public class DeviceService
{
    // دسترسی به موقعیت مکانی
    public async Task<Location> GetCurrentLocation()
    {
        try
        {
            var request = new GeolocationRequest(
                GeolocationAccuracy.Medium, 
                TimeSpan.FromSeconds(10));

            var location = await Geolocation
                .GetLocationAsync(request);
            return location;
        }
        catch (Exception ex)
        {
            // مدیریت خطا
            return null;
        }
    }

    // دسترسی به ویبره
    public void VibrateDevice(int milliseconds)
    {
        try
        {
            Vibration.Default.Vibrate(
                TimeSpan.FromMilliseconds(milliseconds));
        }
        catch (Exception ex)
        {
            // مدیریت خطا
        }
    }
}

پیکربندی و انتشار اپلیکیشن

تنظیمات Android Manifest:

Platforms/Android/AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application 
        android:allowBackup="true"
        android:icon="@mipmap/appicon"
        android:label="My Android App"
        android:theme="@style/Maui.SplashTheme">
    </application>

    <!-- دسترسی‌های مورد نیاز -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

تولید فایل APK:

# انتشار برای اندروید

dotnet publish -c Release -f net7.0-android

# یا از طریق ویژوال استودیو:
# Build → Publish → Create Android Package

بهترین روش‌ها (Best Practices)

۱. الگوی MVVM:

public class MainViewModel : ObservableObject
{
    private string _title = "خوش آمدید";
    public string Title
    {
        get => _title;
        set => SetProperty(ref _title, value);
    }

    private int _counter;
    public int Counter
    {
        get => _counter;
        set => SetProperty(ref _counter, value);
    }

    public ICommand IncrementCommand { get; }

    public MainViewModel()
    {
        IncrementCommand = new Command(ExecuteIncrement);
    }

    private void ExecuteIncrement()
    {
        Counter++;
        Title = $"شما {Counter} بار کلیک کردید";
    }
}

۲. مدیریت حافظه:

  • اشیاء بزرگ را Dispose کنید

  • از weak reference استفاده کنید

  • event handlerها را unsubscribe کنید

۳. بهینه‌سازی عملکرد:

  • از Lazy Loading استفاده کنید

  • عملیات سنگین را async انجام دهید

  • تصاویر را بهینه کنید

تست و دیباگ

تست روی دستگاه واقعی:

#if DEBUG
// کدهای دیباگ
System.Diagnostics.Debug.WriteLine("اپلیکیشن اجرا شد");
#endif

لاگ‌گیری پیشرفته:

public static class Logger
{
    public static void Log(string message)
    {
        // ذخیره در فایل
        // یا ارسال به سرور
    }
}

چالش‌ها و راه‌حل‌ها

چالش‌های رایج:

  1. حجم فایل نهایی: استفاده از Linking برای کاهش حجم

  2. عملکرد: بهینه‌سازی تصاویر و استفاده از caching

  3. پیچیدگی UI: استفاده از Custom Renderers

راه‌حل‌ها:

  • از AOT Compilation استفاده کنید

  • کتابخانه‌های غیرضروری را حذف کنید

  • از Lazy Loading برای صفحات استفاده کنید

برای یادگیری برنامه نویسی از 0 تا 100 دوره جامع برنامه نویسی را مشاهده نمایید.

نتیجه‌گیری

ساخت اپلیکیشن اندروید با سی‌شارپ نه تنها امکان‌پذیر است، بلکه با ظهور .NET MAUI به گزینه‌ای بسیار قدرتمند و کارآمد تبدیل شده است. با استفاده از این تکنولوژی، شما می‌توانید:

  •  از دانش موجود سی‌شارپ خود استفاده کنید

  •  کد را بین پلتفرم‌ها به اشتراک بگذارید

  •  از ابزارهای توسعه قدرتمند بهره‌مند شوید

  •  اپلیکیشن‌های native