গিট ব্যবহার করার সময় গ্র্যাডলের সাথে স্বয়ংক্রিয় অ্যাপ্লিকেশন স্বাক্ষরকরণ
এটি করার জন্য কতগুলি বিভক্ত পদ্ধতি রয়েছে তা আশ্চর্যজনক। এখানে আমার নিজস্ব উপায়, যেখানে আমি গুগলসের নিজস্ব সুপারিশ মেনে চলার চেষ্টা করি । তবে তাদের ব্যাখ্যা পুরোপুরি পরিষ্কার নয়, তাই আমি লিনাক্সের পদ্ধতিটি বিস্তারিতভাবে বর্ণনা করব।
বর্ণনা:
ডিফল্ট গুগল নির্দেশাবলীআপনার অ্যাপ্লিকেশন বিকাশের (জিআইটি) পথে পাসওয়ার্ড এবং স্বাক্ষর ফাইলগুলি না রেখে বিল্ড করার সময় কোনও অ্যাপ্লিকেশনটিতে স্বয়ংক্রিয়ভাবে স্বাক্ষর করার জন্য বরং অস্পষ্ট। কীভাবে এটি করা যায় তা এখানে ধাপে ধাপে ধাপে নির্দেশাবলী instructions
প্রাথমিক অনুমান:
নিম্নলিখিত পথ দ্বারা প্রদত্ত একটি ডিরেক্টরিতে আপনার কাছে "মাই অ্যাপ" নামে একটি অ্যাপ রয়েছে
$HOME/projects/mydev/MyApp
। যাইহোক, মাই অ্যাপ্লিকেশন ডিরেক্টরিটি জিআইটি দিয়ে ব্যবহৃত এবং নিয়ন্ত্রণ করা হয়।
সমস্যা
আমরা স্বাক্ষর বা পাসওয়ার্ড ফাইলগুলি জিআইটি নিয়ন্ত্রিত ডিরেক্টরিতে কোথাও রাখতে চাই না, এমনকি যদি আমরা ব্যবহার করতে সক্ষম হয়ে থাকি .gitignore
ইত্যাদি তবে এটি এখনও খুব ঝুঁকিপূর্ণ এবং ভুল হওয়া সহজ। সুতরাং আমরা আমাদের কীস্টোর এবং স্বাক্ষরের ফাইলগুলি বাইরে চাই।
সমাধান
আমাদের তিনটি (3) জিনিস করা দরকার:
- অ্যান্ড্রয়েড স্টুডিও দ্বারা ব্যবহার করার জন্য একটি পাসওয়ার্ড ফাইল তৈরি করুন
- স্বাক্ষর কী ফাইল তৈরি করুন
build.gradle
(1) এবং (2) ব্যবহারের জন্য মডিউল ফাইল সম্পাদনা করুন ।
এই উদাহরণের জন্য আমরা দুটি ফাইলের নামকরণ করেছি:
keystore.properties
MyApp-release-key.jks
আমরা এই দুটি ফাইল এখানে রাখতে পারি:
cd $HOME/projects/mydev/
(1) কীস্টোর পাসওয়ার্ড ফাইল তৈরি করুন
প্রথম ফাইলটিতে স্পষ্ট পাঠ্য পাসওয়ার্ড ব্যবহার করা হয়েছে; এবং রিলিজ-কী ফাইলের পথে (2)) এটিকে পূরণ করে শুরু করুন, কারণ এটি পরবর্তী পদক্ষেপের জন্য একটি অনুলিপি পেস্ট পরিচালনা সহজতর করবে।
cd $HOME/projects/mydev/
সম্পাদনা করুন keystore.properties
যাতে এটি সামগ্রী হয়:
storePassword=myStorePassword
keyPassword=mykeyPassword
keyAlias=myKeyAlias
storeFile=myStoreFileLocation
এখানে শুধুমাত্র জটিল অংশ, হয় myStoreFileLocation
। বিল্ড চলাকালীন এটি মডিউল ফাইল থেকে দেখা পথ build.gradle
। সাধারণত তাদের পথ অনুরূপ এবং আপেক্ষিক অর্থ: $HOME/projects/mydev/MyApp/app/build.gradle
। MyApp-release-key.jks
ফাইলটি নির্দেশ করার জন্য , আমাদের এখানে যা রাখা দরকার তা হ'ল:
../../../MyApp-release-key.jks
এখানে, আমরা কীটির জন্য "মাই্যাপ" নামটিও বেছে নিয়েছি। তারপরে চূড়ান্ত ফাইলটি দেখতে হবে:
storePassword=myStorePassword
keyPassword=mykeyPassword
keyAlias=myapp
storeFile=../../../MyApp-release-key.jks
(2) স্বাক্ষর ফাইল তৈরি করুন
আপনি স্বাক্ষর কী তৈরি করলে দ্বিতীয় ফাইলটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। আপনার যদি অন্য কোনও অ্যাপস না থাকে এবং এটি আপনার একমাত্র কীস্টোর, তবে ফাইলটি তৈরি করুন:
cd $HOME/projects/mydev/
keytool -genkeypair -v -keystore MyApp-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias myapp
এটি আপনাকে দুটি পাসওয়ার্ড এবং একগুচ্ছ তথ্যের জন্য জিজ্ঞাসা করবে। (অ্যান্ড্রয়েড স্টুডিওতে একই জিনিস।) এখন আপনার পূর্বনির্ধারিত পাসওয়ার্ডগুলি অনুলিপি / আটকান।
(3) উপরেরটি gradle.build
ব্যবহার করতে আপনার মডিউল ফাইলটি সম্পাদনা করুন
নিম্নলিখিত অ্যাপ্লিকেশনগুলিকে আপনার অ্যাপ্লিকেশন / মডিউলের গ্রেডল বিল্ড ফাইলটিতে উপস্থিত করা দরকার। প্রথমে আপনার ব্লকের বাইরে এবং এর আগে নিম্নলিখিত লাইনগুলি যুক্ত করুন android {}
।
//def keystorePropertiesFile = rootProject.file("$HOME/.android/keystore.properties")
def keystorePropertiesFile = rootProject.file("../../keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
তারপর, ভিতরেandroid {}
ব্লক, যোগ করুন:
android {
...
defaultConfig { ... }
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
// Tell Gradle to sign your APK
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}
}
শেল থেকে এখন আপনি নিজের অ্যাপ্লিকেশনটি এটি দিয়ে পুনরায় তৈরি করতে পারবেন:
cd $HOME/projects/mydev/MyApp/app/
./gradlew clean build
এটি গুগল প্লেতে ব্যবহার করা যেতে পারে এমন একটি সঠিকভাবে স্বাক্ষরিত অ্যাপ্লিকেশন তৈরি করা উচিত।
আপডেট: 2019-04-02
আরও সাম্প্রতিক সংস্করণ keytool
এবং কিছু আপনাকে বলছে যে আপনি উপরে / পিডিএসসিএস 12 ভিত্তিক কীফিলটি ব্যবহার করবেন যা আমি উপরে ব্যবহার করব। তারপরে তারা আপনাকে বলছে যে আপনার নতুন ওপেন পিকেসিএস 12 ফর্ম্যাটে রূপান্তর করা উচিত। তবে, দেখে মনে হচ্ছে অ্যান্ড্রয়েড বিকাশ সরঞ্জামগুলি এখনও এর জন্য পুরোপুরি প্রস্তুত নয়, কারণ যদি আপনি এটি করেন তবে আপনি নিম্নলিখিত অদ্ভুত ত্রুটি পাবেন:
com.android.ide.common.signing.KeytoolException:
"F: \ XXX \ XXX.jks" স্টোর থেকে কী কীএক্সএক্সএক্সএক্সটি পড়তে ব্যর্থ: কী পান ব্যর্থ: চূড়ান্ত ব্লকটি সঠিকভাবে প্যাডড নয় Give ডিক্রিপশন চলাকালীন কোনও খারাপ কী ব্যবহার করা হলে এই জাতীয় সমস্যা দেখা দিতে পারে।
সুতরাং একটি রূপান্তরিত কী ব্যবহার করবেন না!