কেন APK ফাইল সাইন করা প্রয়োজন?
প্রতিটি Android অ্যাপ ইন্সটল করার আগে অবশ্যই ডিজিটাল সাইনড থাকতে হবে। স্বাক্ষরটি বিভিন্ন উদ্দেশ্যে কাজ করে:
- অ্যাপ ডেভেলপারের পরিচয় যাচাই করে
- নিশ্চিত করে যে APK-এর সাথে কোনো হেরফের করা হয়নি
- Androidকে অ্যাপ আপডেটগুলিকে আসলটির সাথে মেলাতে অনুমতি দেয়
- সমস্ত Android ডিভাইসে ইনস্টল করার জন্য প্রয়োজনীয়
ডেস্কটপ টুল প্রয়োজন
APK সাইনিংয়ের জন্য কমান্ড-লাইন টুল (JDK / Android SDK) প্রয়োজন। এটি একটি ওয়েব ব্রাউজারে করা যাবে না। আপনার কম্পিউটারে APK সাইন ইন করতে নীচের নির্দেশিকা অনুসরণ করুন.
পদ্ধতি 1: apksigner দিয়ে সাইন ইন করুন (প্রস্তাবিত)
apksigner হল Google-এর অফিসিয়াল APK সাইনিং টুল, Android SDK বিল্ড টুলস-এ অন্তর্ভুক্ত।
ধাপ 1: একটি কীস্টোর তৈরি করুন
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
ধাপ 2: APK সাইন করুন
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
ধাপ 3: স্বাক্ষর যাচাই করুন
apksigner verify --verbose signed-app.apk
পদ্ধতি 2: জার্সাইনার দিয়ে সাইন ইন করুন (উত্তরাধিকার)
# Sign
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore my-release-key.jks \
app-unsigned.apk my-key-alias
# Verify
jarsigner -verify -verbose app-signed.apk
ধাপ 4: জিপলাইন (গুরুত্বপূর্ণ!)
স্বাক্ষর করার পরে, জিপলাইন দিয়ে APK অপ্টিমাইজ করুন:
zipalign -v 4 signed-app.apk aligned-app.apk
ডিবাগ সাইনিং (পরীক্ষার জন্য)
পরীক্ষার উদ্দেশ্যে, আপনি ডিফল্ট Android ডিবাগ কীস্টোর ব্যবহার করতে পারেন:
# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore
# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android \
app.apk
সাইনিং টুল তুলনা
| মেট্রিক | apksigner | জার্সাইনার |
|---|---|---|
| V1 স্বাক্ষর | ||
| V2 স্বাক্ষর | ||
| V3 স্বাক্ষর | ||
| প্রস্তাবিত | উত্তরাধিকার |
APK স্বাক্ষরকারী — প্রায়শই জিজ্ঞাসিত প্রশ্ন
APK সাইনিং, কীস্টোর এবং Android কোড সাইনিং সম্পর্কে সাধারণ প্রশ্ন
কেন অ্যালাইনমেন্ট অর্ডার (apksigner এর আগে zipalign) Android 11-15-এ গুরুত্বপূর্ণ
একটি পরিবর্তিত বা মার্জড APK সাইন করার সময় ডেভেলপার এবং মোডারদের সবচেয়ে ঘন ঘন ভুলগুলির মধ্যে একটি হল zipalign পরে প্যাকেজ সাইন করা—অথবা Google এর Android SDK apksigner এর পরিবর্তে Java-এর লিগ্যাসি jarsigner ইউটিলিটি ব্যবহার করা৷ যেহেতু APK স্বাক্ষর স্কিম v2 এবং v3 জিপ আর্কাইভের সম্পূর্ণ বাইনারি লেআউটে একটি ক্রিপ্টোগ্রাফিক হ্যাশ গণনা করে, সাইন করার পরে zipalign এর সাথে বাইট অফসেটগুলি পরিবর্তন করা v2/v3 স্বাক্ষর ব্লকটিকে অকার্যকর করে৷
Android 11 (এপিআই লেভেল 30) দিয়ে শুরু করে এবং Android 14 এবং 15-এ কঠোরভাবে প্রয়োগ করা হয়েছে, প্যাকেজ ম্যানেজার আধুনিক SDK স্তরগুলিকে লক্ষ্য করে এমন যেকোনো APK-এর জন্য দুটি অ-আলোচনাযোগ্য শর্তের প্রয়োজন:
- আনকম্প্রেসড 4-বাইট সারিবদ্ধ resources.arsc: কম্পাইল করা রিসোর্স টেবিল (resources.arsc) অবশ্যই কম্প্রেসড (STORED) সংরক্ষণ করতে হবে এবং একটি 4-বাইটের সীমানায় সারিবদ্ধ হতে হবে যাতে Android এটিকে RAM-তে কপি না করে সরাসরি মেমরি-ম্যাপ (mmap) করতে পারে৷ সর্বদা zipalign -p -f -v 4 input.apk aligned.apk আগে স্বাক্ষর সম্পাদন করুন৷
- বাধ্যতামূলক v2+ স্বাক্ষর ব্লক: jarsigner (যেটি শুধুমাত্র একটি v1 META-INF/ স্বাক্ষর লিখে) এর সাথে একটি APK টার্গেটিং API 30+ স্বাক্ষর করার ফলে Android 11-15 INSTALL_PARSE_FAILED_NO_CERTIFICATES এর সাথে ইনস্টল প্রত্যাখ্যান করবে। আপনার কীস্টোরের জন্য সঠিক apksigner --v2-signing-enabled=true কমান্ড তৈরি করতে উপরে ইন্টারেক্টিভ কমান্ড জেনারেটর ব্যবহার করুন, অথবা আমাদের APK স্বাক্ষর যাচাইকারী-এ আপনার স্বাক্ষরিত আউটপুট যাচাই করুন।