মৃত কোড নির্মূল

ভূমিকা

আপনার জাভা অ্যাপ্লিকেশনের সোর্স জারে সম্ভবত বিপুল সংখ্যক সোর্স ফাইল রয়েছে যা হয় সম্পূর্ণ অব্যবহৃত বা শুধুমাত্র কয়েকটি পদ্ধতির জন্য অন্তর্ভুক্ত। এই ডেড কোডটিকে অবজেক্টিভ-সি-তে অনুবাদ করা আপনার iOS অ্যাপ্লিকেশনটিকে অপ্রয়োজনীয়ভাবে ফুলিয়ে দেবে এবং অনুবাদ ত্রুটির সম্মুখীন হওয়ার সম্ভাবনা বাড়িয়ে দেবে, বিশেষ করে যদি আপনার জাভা লাইব্রেরিগুলির মধ্যে একটি J2ObjC অনুবাদক দ্বারা সমর্থিত নয় এমন বৈশিষ্ট্যগুলি ব্যবহার করে৷

ProGuard হল একটি ওপেন সোর্স টুল যা আপনাকে জাভা বাইটকোডকে সঙ্কুচিত করতে, অস্পষ্ট করতে এবং অন্যথায় ম্যাঙ্গেল করতে সাহায্য করে। ঐচ্ছিকভাবে, একটি বাইটকোড জার দেওয়া হলে, এটি একটি "ব্যবহার" প্রতিবেদন মুদ্রণ করতে পারে আপনার অ্যাপ্লিকেশনের সমস্ত অব্যবহৃত শ্রেণী এবং পদ্ধতি তালিকাভুক্ত করে। J2ObjC অনুবাদের সময় এই ক্লাস এবং পদ্ধতিগুলি এড়িয়ে যাওয়ার জন্য এই ধরনের একটি প্রতিবেদন ব্যবহার করতে পারে।

ProGuard এখানে ডাউনলোড করা যাবে.

ProGuard কনফিগার করা হচ্ছে

ProGuard একটি কনফিগারেশন ফাইলকে একটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে যা এটি যে অপ্টিমাইজেশানগুলি সম্পাদন করা উচিত এবং এটি যে প্রতিবেদনগুলি তৈরি করা উচিত তা নির্দিষ্ট করে৷ যেহেতু J2ObjC শুধুমাত্র মৃত কোড সম্পর্কে জানতে হবে, তাই আপনার সমস্ত অপ্টিমাইজেশান এবং বহিরাগত লগিং অক্ষম করা উচিত; J2ObjC-এ পাস করা ফাইলটিতে শুধুমাত্র ProGuard হেডার টেক্সট এবং ব্যবহারের রিপোর্ট থাকতে হবে।

প্রথমত, নিশ্চিত করুন যে আপনার অ্যাপ্লিকেশনের জন্য আপনার কাছে একটি বাইটকোড জার আছে যা উৎস জারটির সাথে মিলে যায়। J2ObjC আশা করে এমন আউটপুট তৈরি করতে আপনি একটি টেমপ্লেট হিসাবে ProGuard ম্যানুয়াল থেকে অনুলিপি করা নিম্নলিখিত কনফিগারেশন ফাইলটি ব্যবহার করতে পারেন:

-injars app-bin.jar
-libraryjars /lib/rt.jar

-dontoptimize
-dontobfuscate
-dontpreverify
-printusage
-dontnote

-keep public class com.foo.app.Main {
    public static void main(java.lang.String[]);
}

-keepclassmembers class * {
    static final % *;
    static final java.lang.String *;
}

এই কনফিগারেশন ফাইলটি সংশোধন করুন যাতে ProGuard এমন কিছু মুছে না যা এটি করা উচিত নয়। যদি আপনার জার একটি অ্যাপ্লিকেশন হয় এবং শুধুমাত্র একটি লাইব্রেরি না হয়, তাহলে main() পদ্ধতি উল্লেখ করার জন্য যা আমরা এখানে করেছি তা প্রয়োজনীয় সবকিছু রাখা উচিত; আপনি একটি স্যানিটি চেক হিসাবে ProGuard থেকে ফলাফল আউটপুট পরীক্ষা করতে পারেন.

ProGuard চলমান

একবার আপনার অ্যাপ্লিকেশনের বাইটকোড জার এবং একটি কাস্টমাইজড ProGuard কনফিগারেশন ফাইল (যাকে বলা হয়, বলে, usage.pg ) হয়ে গেলে, আপনি নিম্নলিখিত কমান্ড দিয়ে একটি ব্যবহার প্রতিবেদন ফাইল তৈরি করতে পারেন:

java -jar proguard.jar @usage.pg > usage.log

এটি usage.log নামে একটি ফাইল তৈরি করবে যা আপনার অ্যাপ্লিকেশনের অব্যবহৃত ক্লাস এবং পদ্ধতিগুলি তালিকাভুক্ত করে।

ডেড কোড নির্মূলের সাথে J2ObjC চালানো হচ্ছে

এখন যেহেতু আপনার কাছে ProGuard ব্যবহারের রিপোর্ট আছে, আপনি কমান্ড-লাইন ফ্ল্যাগ --dead-code-report <file> ব্যবহার করে J2ObjC-তে ডেড কোড নির্মূল পর্ব সক্ষম করতে পারেন। DeadCodeEliminator অনুবাদ পর্ব অবজেক্টিভ-সি-তে অনুবাদের আগে প্রতিটি সোর্স ফাইল থেকে ডেড কোড সরাতে ব্যবহারের রিপোর্ট ব্যবহার করবে।