परिचय
आपके Java ऐप्लिकेशन के सोर्स जार में शायद बहुत बड़ी संख्या में ऐसी सोर्स फ़ाइलें हैं जिन्हें या तो पूरी तरह से इस्तेमाल नहीं किया गया है या कुछ ही तरीकों में इसे शामिल किया गया है. इस बंद कोड का अनुवाद Objective-C में किया जा रहा है आपके iOS ऐप्लिकेशन को बेवजह अपलोड कर देगा. इससे आपके ऐप्लिकेशन को अनुवाद से जुड़ी गड़बड़ियां, खास तौर पर तब, जब आपकी कोई Java लाइब्रेरी ऐसी सुविधाओं का इस्तेमाल करती हो जो J2ObjC अनुवादक.
ProGuard एक ओपन सोर्स टूल है, जो आपको को उलझाने वाले और अन्य तरीके से Java बाइट कोड मैनेज करना होगा. अगर एक बाइट कोड जार दिया गया है, तो यह "इस्तेमाल" रिपोर्ट में उन सभी क्लास और तरीकों की सूची होनी चाहिए जिनका इस्तेमाल नहीं हुआ है. J2ObjC इनका इस्तेमाल कर सकता है ऐसी रिपोर्ट जिसमें अनुवाद के दौरान इन क्लास और तरीकों को छोड़ा जा सकता है.
ProGuard को यहां से डाउनलोड किया जा सकता है.
ProGuard को कॉन्फ़िगर करना
ProGuard कॉन्फ़िगरेशन फ़ाइल को कमांड-लाइन तर्क के तौर पर स्वीकार करता है, जो इसके ऑप्टिमाइज़ेशन की जानकारी देता है को लागू करना चाहिए और उसे जो रिपोर्ट बनानी चाहिए. J2ObjC को सिर्फ़ डेड कोड के बारे में जानने की ज़रूरत है, आपको सभी ऑप्टिमाइज़ेशन और बाहरी लॉगिंग को बंद कर देना चाहिए; J2ObjC को पास की गई फ़ाइल इसमें सिर्फ़ ProGuard हेडर टेक्स्ट और इस्तेमाल की रिपोर्ट शामिल होती है.
सबसे पहले, यह पक्का करें कि आपके पास अपने ऐप्लिकेशन के लिए एक बाइटकोड जार हो, जो सोर्स जार से मेल खाता हो. ProGuard मैन्युअल से कॉपी की गई इस कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल, टेंप्लेट के तौर पर आउटपुट जो J2ObjC उम्मीद करता है:
-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. The DeadCodeEliminator का अनुवाद
के इस चरण में,
Objective-C.