2013-12-07 5 views
5

मैं आईडीई के रूप में इंटेलिजे आईडीईए का उपयोग कर जावाएफएक्स एप्लीकेशन विकसित कर रहा हूं।मेरे जावाएफएक्स के इंटेलिजे आर्टिफैक्ट में प्रोगार्ड ओबफ्यूसेशन को कैसे एकीकृत किया जाए?

अब तक, सब कुछ सुचारू रूप से चलता है, मेरे पास मेरे सभी बाहरी libs कॉन्फ़िगर किए गए हैं और मेरा जावाएफएक्स आर्टिफैक्ट सही ढंग से बनाया जा रहा है।

अब आर्टिफैक्ट बनने पर मैं obfuscation (प्रोगार्ड का उपयोग करके) को एकीकृत करना चाहता हूं।

इंटेलिजे के पास आर्टिफैक्ट के गुणों में 'प्री-प्रोसेसिंग' और 'पोस्ट प्रोसेसिंग' विकल्प है जहां मैं एक चींटी कार्य को चलाने के लिए परिभाषित कर सकता हूं।

लेकिन मुझे नहीं पता कि उस कार्य को कैसे बनाया जाए और संकलक को मेरे obfuscation विकल्पों को बताएं।

किसी भी सुराग के लिए अग्रिम में बहुत बहुत धन्यवाद,

सादर

उत्तर

9

इसमें 3 बुनियादी तरीके हैं आप यह कर:

  1. एक सामान्य proguard.cfg फ़ाइल बनाएँ, और इसे संदर्भ चींटी
  2. एक्सएमएल नोटेशन
  3. का उपयोग करके सीधे अपनी प्रोजेगा सेटिंग्स को चींटी के अंदर रखें, proguard.c का उपयोग करके सीधे अपने प्रोजेवार्ड सेटिंग्स को चींटी के अंदर रखें FG प्रारूप

यहाँ 3 दृष्टिकोण के साथ चींटी के साथ ProGuard का उपयोग करके की एक बुनियादी उदाहरण है: http://www.reviewmylife.co.uk/blog/2007/10/20/proguard-eclipse-ant-buildxml/

महत्वपूर्ण बात यह है Proguard के बारे में याद है कि सब कुछ आप अंधेरा करना चाहते हैं एक जार फ़ाइल के अंदर हो गया है है, और आपको स्पष्ट रूप से यह बताने की ज़रूरत होगी कि कुछ चीजों को कमजोर न करें (जैसे आपका प्रोग्राम एंट्री पॉइंट, चीजें जो आप प्रतिबिंब के माध्यम से एक्सेस करते हैं)।

JavaFX आप मुश्किल होता रोकना चाहते हैं, एक प्रवेश बिंदु के रूप में इस्तेमाल एक फ़ाइल बनाता है:

-keepclasseswithmembers public class com.javafx.main.Main { 
    public *; public static *; 
} 

जावा/JavaFX libs

-libraryjars "${java.home}/lib/rt.jar" 
-libraryjars "${java.home}/lib/ant-javafx.jar" 
-libraryjars "${java.home}/lib/jfxrt.jar" 

आप FXML फ़ाइलों का उपयोग कर रहे हैं शामिल करने के लिए सुनिश्चित करें कि आप, यह सुनिश्चित करना होगा कि आपकी FXML फ़ाइलों का नाम उनके संबंधित नियंत्रक फ़ाइल के समान ही रखा गया है:

-adaptresourcefilecontents **.fxml 

कुछ भी @FXML साथ एनोटेट प्रतिबिंब के माध्यम से पहुंचा जा सकता है, इसलिए उन्हें अंधेरा नहीं है:

-keepclassmembernames class * { 
     @javafx.fxml.FXML *; 
    } 

Proguard वेबसाइट जानकारी का एक बहुत कुछ है, लेकिन यह grok करने के लिए मुश्किल हो सकता है।

ईमानदारी से, वेब पर बहुत सारे उदाहरण हैं जो आपको दिखाते हैं कि यह कैसे करें। बस google javafx proguard, और आपको शायद कुछ अच्छे पूर्ण उदाहरण मिलेंगे।

संपादित करें: जहां तक ​​IntelliJ चींटी को जानकारी पास करता है .. मुझे नहीं पता। संभवतः कुछ चर हैं जो आप गुजरते हैं कि आप एक सामान्य चींटी की तरह संदर्भित करते हैं। मुझे यकीन है कि JetBrains वेबसाइट पर उनकी वेबसाइट पर जानकारी है यदि आप इसे नेट पर नहीं ढूंढ पा रहे हैं।

यदि यह मैं था, तो मैं बिना किसी अपर्याप्तता के अपने आवेदन को संकलित करने के लिए एक चींटी स्क्रिप्ट तैयार करूंगा, फिर एक बार जब आप उस वर्ग को दूर कर लेंगे तो प्रोजेवार्ड में जोड़ें।

+0

आपको बहुत बहुत धन्यवाद। जिसने मेरी समस्या हल की, अब सबकुछ खराब हो रहा है! –

0

विचार की 'पोस्ट-प्रोसेसिंग' में एक चींटी कार्य चलाने के संबंध में बस कुछ पूरक जानकारी।

सुनिश्चित करें कि आपके पास 'डिफ़ॉल्ट' लक्ष्य है। अन्यथा कार्य निष्पादित नहीं होगा। Build.xml का उदाहरण:

<?xml version="1.0"?> 
<project name="ant_task" default="obfuscate" basedir="."> 
    <target name="obfuscate"> 
     <taskdef resource="proguard/ant/task.properties" 
      classpath="/opt/proguard5.2.1/lib/proguard.jar" /> 
     <proguard configuration="proguard.cfg"/> 
    </target> 
</project> 
संबंधित मुद्दे