আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্প সেট আপ করুন

এই পৃষ্ঠাটি ব্যাখ্যা করে কিভাবে আপনার ডেভেলপমেন্ট প্রকল্পে নেভিগেশন SDK সংহত করবেন।

আপনার প্রকল্পে নেভিগেশন SDK যোগ করুন

নেভিগেশন SDK গুগল ম্যাভেন রিপোজিটরির মাধ্যমে পাওয়া যায়। আপনি আপনার Gradle build.gradle অথবা Maven pom.xml কনফিগারেশন ব্যবহার করে আপনার প্রকল্পে SDK যোগ করতে পারেন।

  1. আপনার Gradle অথবা Maven কনফিগারেশনে নিম্নলিখিত নির্ভরতা যোগ করুন, Android এর জন্য Navigation SDK এর পছন্দসই সংস্করণের জন্য VERSION_NUMBER প্লেসহোল্ডারটি প্রতিস্থাপন করুন।

    গ্রেডল

    আপনার মডিউল-স্তরের build.gradle এ নিম্নলিখিতটি যোগ করুন:

    dependencies {
            ...
            implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER'
    }
    

    মাভেন

    আপনার pom.xml এ নিম্নলিখিতটি যোগ করুন:

    <dependencies>
      ...
      <dependency>
        <groupId>com.google.android.libraries.navigation</groupId>
        <artifactId>navigation</artifactId>
        <version>VERSION_NUMBER</version>
      </dependency>
    </dependencies>
    
  2. যদি আপনার কোনও নির্ভরতা থাকে যা Maps SDK ব্যবহার করে, তাহলে আপনাকে Maps SDK-এর উপর নির্ভরশীল প্রতিটি ঘোষিত নির্ভরতার মধ্যে নির্ভরতা বাদ দিতে হবে।

    গ্রেডল

    আপনার শীর্ষ-স্তরের build.gradle এ নিম্নলিখিতগুলি যোগ করুন:

    allprojects {
            ...
            // Required: you must exclude the Google Play service Maps SDK from
            // your transitive dependencies to make sure there won't be
            // multiple copies of Google Maps SDK in your binary, as the Navigation
            // SDK already bundles the Google Maps SDK.
            configurations {
                implementation {
                    exclude group: 'com.google.android.gms', module: 'play-services-maps'
                }
            }
    }
    

    মাভেন

    আপনার pom.xml এ নিম্নলিখিতটি যোগ করুন:

    <dependencies>
      <dependency>
      <groupId>project.that.brings.in.maps</groupId>
      <artifactId>MapsConsumer</artifactId>
      <version>1.0</version>
        <exclusions>
          <!-- Navigation SDK already bundles Maps SDK. You must exclude it to prevent duplication-->
          <exclusion>  <!-- declare the exclusion here -->
            <groupId>com.google.android.gms</groupId>
            <artifactId>play-services-maps</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
    </dependencies>
    

বিল্ড কনফিগার করুন

প্রকল্পটি তৈরি করার পরে, আপনি নেভিগেশন SDK-এর সফল নির্মাণ এবং ব্যবহারের জন্য সেটিংস কনফিগার করতে পারেন।

স্থানীয় প্রপার্টি আপডেট করুন

  • Gradle Scripts ফোল্ডারে , local.properties ফাইলটি খুলুন এবং android.useDeprecatedNdk=true যোগ করুন।

গ্রেডল বিল্ড স্ক্রিপ্ট আপডেট করুন

  • build.gradle (Module:app) ফাইলটি খুলুন এবং নেভিগেশন SDK-এর প্রয়োজনীয়তা পূরণের জন্য সেটিংস আপডেট করতে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন এবং অপ্টিমাইজেশন বিকল্পগুলি সেট করার কথাও বিবেচনা করুন।

    নেভিগেশন SDK-এর জন্য প্রয়োজনীয় সেটিংস

    1. minSdkVersion 23 বা তার বেশিতে সেট করুন।
    2. targetSdkVersion 34 বা তার বেশিতে সেট করুন।
    3. একটি dexOptions সেটিং যোগ করুন যা javaMaxHeapSize বৃদ্ধি করে।
    4. অতিরিক্ত লাইব্রেরির জন্য অবস্থান নির্ধারণ করুন।
    5. নেভিগেশন SDK-এর জন্য repositories এবং dependencies যোগ করুন।
    6. নির্ভরতাগুলিতে সংস্করণ নম্বরগুলি সর্বশেষ উপলব্ধ সংস্করণগুলির সাথে প্রতিস্থাপন করুন।

    নির্মাণের সময় কমাতে ঐচ্ছিক সেটিংস

    • নির্ভরতা থেকে অব্যবহৃত কোড এবং রিসোর্সগুলি সরাতে R8/ProGuard ব্যবহার করে কোড সঙ্কুচিতকরণ এবং রিসোর্স সঙ্কুচিতকরণ সক্ষম করুন। যদি R8/ProGuard পদক্ষেপটি চালাতে খুব বেশি সময় নেয়, তাহলে উন্নয়ন কাজের জন্য মাল্টিডেক্স সক্ষম করার কথা বিবেচনা করুন।
    • বিল্ডে অন্তর্ভুক্ত ভাষা অনুবাদের সংখ্যা হ্রাস করুন: ডেভেলপমেন্টের সময় একটি ভাষার জন্য resConfigs সেট করুন। চূড়ান্ত বিল্ডের জন্য, আপনি যে ভাষাগুলি ব্যবহার করেন তার জন্য resConfigs সেট করুন। ডিফল্টরূপে, Gradle নেভিগেশন SDK দ্বারা সমর্থিত সমস্ত ভাষার জন্য রিসোর্স স্ট্রিং অন্তর্ভুক্ত করে।

    Java8 সাপোর্টের জন্য ডিসুগারিং যোগ করুন

    • যদি আপনি অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৪.০.০ বা তার বেশি ভার্সন ব্যবহার করে আপনার অ্যাপ তৈরি করেন, তাহলে প্লাগইনটি বেশ কয়েকটি জাভা ৮ ভাষার API ব্যবহারের জন্য সমর্থন প্রসারিত করে। আরও তথ্যের জন্য জাভা ৮ ডিসগারিং সাপোর্ট দেখুন। কম্পাইল এবং নির্ভরতা বিকল্পগুলির জন্য নীচের উদাহরণ বিল্ড স্ক্রিপ্ট স্নিপেটটি দেখুন।
    • আমরা Gradle 8.4, Android Gradle প্লাগইন সংস্করণ 8.3.0 এবং Desugar লাইব্রেরি com.android.tools:desugar_jdk_libs_nio:2.0.3 ব্যবহার করার পরামর্শ দিচ্ছি। এই সেটআপটি Android সংস্করণ 6.0.0 এবং উচ্চতর সংস্করণের জন্য Navigation SDK এর সাথে সামঞ্জস্যপূর্ণ।
    • app মডিউল এবং নেভিগেশন SDK-এর উপর সরাসরি নির্ভরশীল যেকোনো মডিউলের জন্য Desugar লাইব্রেরি সক্রিয় করতে হবে।

নিচে অ্যাপ্লিকেশনটির জন্য Gradle বিল্ড স্ক্রিপ্টের একটি উদাহরণ দেওয়া হল। আপডেটেড নির্ভরতা সেটের জন্য নমুনা অ্যাপগুলি পরীক্ষা করুন, কারণ আপনি যে Navigation SDK সংস্করণটি ব্যবহার করছেন তা এই ডকুমেন্টেশনের সামান্য এগিয়ে বা পিছনে থাকতে পারে।

apply plugin: 'com.android.application'

ext {
    navSdk = "__NAVSDK_VERSION__"
}

android {
    compileSdk 33
    buildToolsVersion='28.0.3'

    defaultConfig {
        applicationId "<your id>"
        // Navigation SDK supports SDK 23 and later.
        minSdkVersion 23
        targetSdkVersion 34
        versionCode 1
        versionName "1.0"
        // Set this to the languages you actually use, otherwise you'll include resource strings
        // for all languages supported by the Navigation SDK.
        resConfigs "en"
        multiDexEnabled true
    }

    dexOptions {
        // This increases the amount of memory available to the dexer. This is required to build
        // apps using the Navigation SDK.
        javaMaxHeapSize "4g"
    }
    buildTypes {
        // Run ProGuard. Note that the Navigation SDK includes its own ProGuard configuration.
        // The configuration is included transitively by depending on the Navigation SDK.
        // If the ProGuard step takes too long, consider enabling multidex for development work
        // instead.
        all {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
        // Sets Java compatibility to Java 8
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

repositories {
    // Navigation SDK for Android and other libraries are hosted on Google's Maven repository.
    google()
}

dependencies {
    // Include the Google Navigation SDK.
    // Note: remember to exclude Google Play service Maps SDK from your transitive
    // dependencies to avoid duplicate copies of the Google Maps SDK.
    api "com.google.android.libraries.navigation:navigation:${navSdk}"

    // Declare other dependencies for your app here.

    annotationProcessor "androidx.annotation:annotation:1.7.0"
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}

আপনার অ্যাপে API কী যোগ করুন

এই বিভাগে বর্ণনা করা হয়েছে কিভাবে আপনার API কী সংরক্ষণ করবেন যাতে এটি আপনার অ্যাপ দ্বারা নিরাপদে রেফারেন্স করা যায়। আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে আপনার API কী পরীক্ষা করা উচিত নয়, তাই আমরা এটি secrets.properties ফাইলে সংরক্ষণ করার পরামর্শ দিচ্ছি, যা আপনার প্রকল্পের রুট ডিরেক্টরিতে অবস্থিত। secrets.properties ফাইল সম্পর্কে আরও তথ্যের জন্য, Gradle properties files দেখুন।

এই কাজটি সহজ করার জন্য, আমরা আপনাকে অ্যান্ড্রয়েডের জন্য সিক্রেটস গ্রেডল প্লাগইন ব্যবহার করার পরামর্শ দিচ্ছি।

আপনার গুগল ম্যাপস প্রজেক্টে অ্যান্ড্রয়েডের জন্য সিক্রেটস গ্রেডল প্লাগইন ইনস্টল করতে:

  1. অ্যান্ড্রয়েড স্টুডিওতে, আপনার শীর্ষ-স্তরের build.gradle.kts অথবা build.gradle ফাইলটি খুলুন এবং buildscript অধীনে dependencies উপাদানে নিম্নলিখিত কোডটি যুক্ত করুন।

    কোটলিন

    plugins {
        alias(libs.plugins.android.application) apply false
        alias(libs.plugins.jetbrains.kotlin.android) apply false
        alias(libs.plugins.kotlin.compose) apply false
        alias(libs.plugins.secrets.gradle.plugin) apply false
    }

    খাঁজকাটা

    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
  2. আপনার মডিউল-স্তরের build.gradle.kts অথবা build.gradle ফাইলটি খুলুন এবং plugins উপাদানে নিম্নলিখিত কোডটি যোগ করুন।

    কোটলিন

    plugins {
        // ...
        alias(libs.plugins.secrets.gradle.plugin)
    }

    খাঁজকাটা

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. আপনার মডিউল-স্তরের build.gradle.kts অথবা build.gradle ফাইলে, নিশ্চিত করুন যে targetSdk এবং compileSdk 34 তে সেট করা আছে।
  4. আপনার প্রকল্পটি Gradle এর সাথে সিঙ্ক করুন
  5. আপনার টপ-লেভেল ডিরেক্টরিতে secrets.properties ফাইলটি খুলুন, এবং তারপর নিম্নলিখিত কোডটি যোগ করুন। YOUR_API_KEY আপনার API কী দিয়ে প্রতিস্থাপন করুন। এই ফাইলটিতে আপনার কীটি সংরক্ষণ করুন কারণ secrets.properties একটি সংস্করণ নিয়ন্ত্রণ সিস্টেমে চেক করা থেকে বাদ দেওয়া হয়।
    MAPS_API_KEY=YOUR_API_KEY
  6. আপনার টপ-লেভেল ডিরেক্টরিতে secrets.properties ফাইলের মতো একই ফোল্ডারে local.defaults.properties ফাইলটি তৈরি করুন এবং তারপর নিম্নলিখিত কোডটি যোগ করুন।

    MAPS_API_KEY=DEFAULT_API_KEY

    এই ফাইলটির উদ্দেশ্য হল যদি secrets.properties ফাইলটি না পাওয়া যায়, তাহলে API কী-এর জন্য একটি ব্যাকআপ লোকেশন প্রদান করা যাতে বিল্ডগুলি ব্যর্থ না হয়। এটি ঘটতে পারে যদি আপনি এমন একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা থেকে অ্যাপটি ক্লোন করেন যা secrets.properties বাদ দেয় এবং আপনি এখনও আপনার API কী প্রদানের জন্য স্থানীয়ভাবে একটি secrets.properties ফাইল তৈরি না করেন।

  7. আপনার AndroidManifest.xml ফাইলে, com.google.android.geo.API_KEY এ যান এবং android:value attribute আপডেট করুন। যদি <meta-data> ট্যাগটি বিদ্যমান না থাকে, তাহলে এটি <application> ট্যাগের একটি শিশু হিসাবে তৈরি করুন।
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />

    দ্রষ্টব্য: com.google.android.geo.API_KEY হল API কী-এর জন্য প্রস্তাবিত মেটাডেটা নাম। এই নামের একটি কী Android প্ল্যাটফর্মে একাধিক Google Maps-ভিত্তিক API-তে প্রমাণীকরণ করতে ব্যবহার করা যেতে পারে, যার মধ্যে Android-এর জন্য Navigation SDKও অন্তর্ভুক্ত। ব্যাকওয়ার্ডস সামঞ্জস্যের জন্য, API com.google.android.maps.v2.API_KEY নামটিও সমর্থন করে। এই লিগ্যাসি নামটি শুধুমাত্র Android Maps API v2-তে প্রমাণীকরণের অনুমতি দেয়। একটি অ্যাপ্লিকেশন API কী মেটাডেটা নামগুলির মধ্যে শুধুমাত্র একটি নির্দিষ্ট করতে পারে। যদি দুটিই নির্দিষ্ট করা থাকে, তাহলে API একটি ব্যতিক্রম দেয়।

  8. অ্যান্ড্রয়েড স্টুডিওতে, আপনার মডিউল-লেভেল build.gradle.kts অথবা build.gradle ফাইলটি খুলুন এবং secrets সম্পত্তিটি সম্পাদনা করুন। যদি secrets সম্পত্তিটি বিদ্যমান না থাকে, তাহলে এটি যোগ করুন।

    প্লাগইনের বৈশিষ্ট্য সম্পাদনা করে propertiesFileName কে secrets.properties এ সেট করুন, defaultPropertiesFileName local.defaults.properties এ সেট করুন, এবং অন্য যেকোনো বৈশিষ্ট্য সেট করুন।

    কোটলিন

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file.
        // 2. Add this line, where YOUR_API_KEY is your API key:
        //        MAPS_API_KEY=YOUR_API_KEY
        propertiesFileName = "secrets.properties"
    
        // A properties file containing default secret values. This file can be
        // checked in version control.
        defaultPropertiesFileName = "local.defaults.properties"
    }
            

    খাঁজকাটা

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file.
        // 2. Add this line, where YOUR_API_KEY is your API key:
        //        MAPS_API_KEY=YOUR_API_KEY
        propertiesFileName = "secrets.properties"
    
        // A properties file containing default secret values. This file can be
        // checked in version control.
        defaultPropertiesFileName = "local.defaults.properties"
    }
            

আপনার অ্যাপে প্রয়োজনীয় অ্যাট্রিবিউশন অন্তর্ভুক্ত করুন

আপনি যদি আপনার অ্যাপে Android এর জন্য নেভিগেশন SDK ব্যবহার করেন, তাহলে আপনার অ্যাপের আইনি বিজ্ঞপ্তি বিভাগের অংশ হিসেবে অ্যাট্রিবিউশন টেক্সট এবং ওপেন সোর্স লাইসেন্স অন্তর্ভুক্ত করতে হবে।

আপনি প্রয়োজনীয় অ্যাট্রিবিউশন টেক্সট এবং ওপেন সোর্স লাইসেন্সগুলি নেভিগেশন SDK for Android জিপ ফাইলে খুঁজে পেতে পারেন:

  • NOTICE.txt
  • LICENSES.txt

আপনি যদি একজন মোবিলিটি বা ফ্লিট ইঞ্জিন ডেলিভারি গ্রাহক হন

আপনি যদি মোবিলিটি বা ফ্লিট ইঞ্জিন ডেলিভারি গ্রাহক হন, তাহলে মোবিলিটি ডকুমেন্টেশনে বিলিং সম্পর্কে জানুন। লেনদেন রেকর্ড করার বিষয়ে আরও তথ্যের জন্য, বিলিং সেট আপ করুন , বিলযোগ্য লেনদেন রেকর্ড করুন , রিপোর্টিং করুন এবং বিলযোগ্য লেনদেন রেকর্ড করুন (অ্যান্ড্রয়েড) দেখুন।