android বিশ্লেষণ

প্রদত্ত লোকেশনে ফাইল (AAB, APK, JAR, AAR) বিশ্লেষণ করে এবং উপলভ্য সব বিবরণ রিপোর্ট করে।

ব্যবহার

android analyze [-h] [--analysis=PARAM] [--format=PARAM] <path>

বিকল্প

  • --analysis=PARAM - আউটপুট ফিল্টার করার জন্য বিশ্লেষণের বিভাগ (বেসিক, অপ্টিমাইজেশন)। কমা দিয়ে আলাদা করা ভ্যালু কাজ করে (ডিফল্ট: সব)।
  • -f,--format=PARAM - আউটপুট ফর্ম্যাট: json, textproto. বাদ দেওয়া হলে, আউটপুট মানুষের-পঠনযোগ্য হিসেবে ফর্ম্যাট করা হয়।
  • -h,--help - নির্দিষ্ট কমান্ডের জন্য সহায়তা মেসেজ দেখায়।

androidটি বিকল্প:

  • --sdk=PARAM - Android SDK-এর পাথ।
  • -v,--verbose - সমস্যার সমাধান করার জন্য ভার্বোস আউটপুট চালু করুন।
  • -V,--version - ভার্সন সংক্রান্ত তথ্য প্রিন্ট করে বেরিয়ে আসুন।

পজিশনাল আর্গুমেন্ট

  • <path> - বিশ্লেষণ করার জন্য টার্গেট ফাইলের পাথ (AAB, APK, JAR, AAR)।

বর্ণনা

android analyze এক বা একাধিক Android আর্টিফ্যাক্ট—যেমন অ্যাপ্লিকেশন প্যাকেজ (.aab, .apk) বা লাইব্রেরি আর্কাইভ (.aar, .jar)—পরীক্ষা করে এবং বিস্তারিত বিল্ড, স্ট্রাকচার ও পারফর্ম্যান্স মেটাডেটা রিপোর্ট করে।

ফাইলের ধরন কাজ করে

android analyze-এ অ্যাপ্লিকেশন প্যাকেজ ও লাইব্রেরি আর্কাইভ, দুটিই কাজ করে:

  • Android অ্যাপ বান্ডেল (.aab) এবং APK (.apk): অ্যাপ্লিকেশন-লেভেল মেটাডেটা, কম্পাইলেশন কনফিগারেশন, DEX বৈশিষ্ট্য এবং অপ্টিমাইজেশন আউটপুট মূল্যায়ন করে।
  • Android আর্কাইভ (.aar) এবং Java আর্কাইভ (.jar): লাইব্রেরি-লেভেল মেটাডেটা, DEX কম্পাইলেশন মেট্রিক্স, নিয়ম বজায় রাখার প্রভাব এবং বান্ডেল করা নেটিভ কম্পোনেন্ট মূল্যায়ন করে।

বিশ্লেষণের বিভাগ (--analysis)

ডিফল্ট হিসেবে, উপলভ্য সব বিশ্লেষণ বিভাগ পারফর্ম করা হয়। নির্দিষ্ট বিভাগে আউটপুট ফিল্টার করতে --analysis=<category> ব্যবহার করুন (কমা দিয়ে আলাদা করা)।

  • basic: অ্যাপ্লিকেশনের জন্য প্যাকেজের নাম এবং ভার্সনের মতো প্রাথমিক মেটাডেটা: অ্যাপ্লিকেশন শনাক্তকরণ সংক্রান্ত বিবরণ (যেমন, প্যাকেজের নাম, ভার্সনের নাম এবং অ্যাপ্লিকেশনের জন্য ভার্সন কোড) রিপোর্ট করে।

  • optimization: কম্পাইলার অপ্টিমাইজেশন, DEX সাইজ এবং কোড-শ্রিঙ্কিং মেটাডেটা:

    • অ্যাপ্লিকেশনের জন্য (.aab, .apk): Android Gradle Plugin (AGP) ভার্সন, আনকমপ্রেসড DEX সাইজ, R8 সঙ্কোচন ও অপ্টিমাইজেশন সেটিংস ও শতাংশ, R8 রিসোর্স অপ্টিমাইজেশন স্ট্যাটাস এবং DEX মার্কার মেটাডেটা রিপোর্ট করে।
    • লাইব্রেরির জন্য (.aar, .jar): D8 এবং R8 DEX সাইজ, অনুপাত বজায় রাখা, আইটেম সংগ্রহের সারসংক্ষেপ (বজায় রাখা বনাম মোট ক্লাস, পদ্ধতি এবং ফিল্ড), প্রভাবের ব্যাসার্ধ সহ ব্যবহৃত এবং অব্যবহৃত প্যাকেজ-ব্যাপী বজায় রাখার নিয়ম, ব্লক করা গ্রাহক বজায় রাখার নিয়ম, প্যাকেজ করা নেটিভ লাইব্রেরি (.so ফাইল) এবং শনাক্ত করা অপ্টিমাইজেশন অ্যান্টিপ্যাটার্নের জন্য সতর্কতা রিপোর্ট করে।

আউটপুট ফর্ম্যাটিং (-f, --format)

  • ডিফল্ট হিসেবে, আউটপুট মানুষের-পঠনযোগ্য সারসংক্ষেপ ফর্ম্যাটে প্রিন্ট করা হয়।
  • -f json, --format=json: মেশিনের ক্ষেত্রে গ্রহণযোগ্য JSON নির্গত করে, যা স্ক্রিপ্ট এবং CI পাইপলাইনের মাধ্যমে প্রোগ্রাম্যাটিক পার্সিংয়ের জন্য উপযুক্ত।
  • -f textproto, --format=textproto: Protobuf টেক্সট ফর্ম্যাট (textproto) এমিট করে।

উদাহরণ

সব ডিফল্ট বিভাগ সহ APK বিশ্লেষণ করুন:

android analyze app-release.apk

একসাথে একাধিক আর্টিফ্যাক্ট বিশ্লেষণ করুন:

android analyze app-release.apk library.aar

AAB বিশ্লেষণ করে JSON হিসেবে ফলাফল আউটপুট করুন:

android analyze --format=json app-release.aab

স্যাম্পেল JSON আউটপুট:

{
  "results": [
    {
      "optimization": {
        "bundleAnalysisResult": {
          "agpVersion": "9.3.2",
          "r8Json": {
            "version": "9.3.16",
            "options": {
              "isRepackageClassesEnabled": true,
              "isProguardCompatibilityModeEnabled": false
            },
            "stats": {
              "shrinkingRatio": 0.9606,
              "optimizationRatio": 0.9551,
              "obfuscationRatio": 0.9622
            },
            "resourceOptimizationStatus": "R8_RESOURCE_OPTIMIZATION_STATUS_DISABLED",
            "r8DexChecksumStatus": "EXACT_MATCH"
          },
          "r8DexMarkerMetadata": {
            "r8Enabled": true,
            "d8Enabled": false,
            "fullModeEnabled": true
          },
          "mappingObfuscationRatio": 0.97108626,
          "dexHeuristicObfuscationRatio": 0.97108626,
          "uncompressedDexSizeBytes": "6198152"
        }
      },
      "artifactPath": "app-release.aab",
      "basic": {
        "appInfo": {
          "packageName": "com.google.samples.apps.nowinandroid",
          "versionName": "1.0",
          "versionCode": "1"
        }
      }
    }
  ]
}

সব ডিফল্ট বিভাগ সহ Java আর্কাইভ (JAR) লাইব্রেরি বিশ্লেষণ করুন:

android analyze library.jar

optimization বিভাগের জন্য ফিল্টার করা Android Archive (AAR) লাইব্রেরি বিশ্লেষণ করুন এবং JSON হিসেবে আউটপুট দিন:

android analyze --analysis=optimization -f json library.aar

স্যাম্পেল JSON আউটপুট:

{
  "results": [
    {
      "optimization": {
        "libraryAnalysisResult": {
          "dex": {
            "d8CompileResult": {
              "dexSizeBytes": 2117400
            },
            "r8CompileResult": {
              "dexSizeBytes": 1100,
              "configuration": {
                "keepRules": [
                  {
                    "source": "-keep class com.example.ExampleClass_* {\n  static *** builder();\n}",
                    "keptItemCount": 2
                  },
                  {
                    "source": "-keep class com.example.SomeClass {\n  public static *** SDK_ROOT_CLASS_NAME;\n}",
                    "keptItemCount": 2
                  }
                ]
              },
              "classes": {
                "itemCount": 3437,
                "keptItemCount": 2,
                "noObfuscationCount": 2,
                "noOptimizationCount": 2,
                "noShrinkingCount": 2
              },
              "fields": {
                "itemCount": 9835,
                "keptItemCount": 1,
                "noObfuscationCount": 1,
                "noOptimizationCount": 1,
                "noShrinkingCount": 1
              },
              "methods": {
                "itemCount": 16333,
                "keptItemCount": 1,
                "noObfuscationCount": 1,
                "noOptimizationCount": 1,
                "noShrinkingCount": 1
              }
            },
            "validateConsumerKeepRulesResult": {}
          },
          "r8Version": "9.5.17-dev",
          "version": "kg=1_r8=9.5.17-dev"
        }
      },
      "artifactPath": "library.aar"
    }
  ]
}