প্রচুর লোকেরা -keep class com.myapp.customcomponents.** { *; }
প্রক্রিয়াজাতকরণ থেকে কোনও পথকে বাদ দেওয়ার উপায় হিসাবে প্রস্তাবিত বলে মনে হয় । এখানে দেখো:
- অগ্রগতি থেকে প্যাকেজ বাদ দিন
- প্রোগার্ড সম্পূর্ণ প্যাকেজ উপেক্ষা করুন
- অগ্রগতি অবসন্নতা থেকে একটি ডিরেক্টরি প্রতিরোধ করুন
এই সমাধানটির সাথে সমস্যাটি হ'ল এখনও কিছু স্তরের উদ্বিগ্নতা ঘটছে যা আপনার কোডটি ভেঙে দিতে পারে। আপনি ম্যাপিং প্রিন্ট মধ্যে ম্যাপিং দেখতে পারেন:
java.lang.String toString() -> toString
int getMemoizedSerializedSize() -> getMemoizedSerializedSize
void setMemoizedSerializedSize(int) -> setMemoizedSerializedSize
int getSerializedSize() -> getSerializedSize
boolean equals(java.lang.Object) -> equals
int hashCode() -> hashCode
আমি যে সমাধানটি বেছে নিয়েছি তা হ'ল দুটি পদক্ষেপের প্রক্রিয়া। প্রথমে, injars
আমি যে প্যাকেজটি প্রক্রিয়া করতে চাই তার চয়ন করতে ফিল্টারটি ব্যবহার করুন। অন্যান্য প্যাকেজ প্যাথগুলি গ্রন্থাগার হিসাবে যুক্ত করা সম্ভব।
-injars artifacts/in.jar(org/toprocess/**.class)
-outjars out/processed.jar
-libraryjars artifacts/in.jar(org/skipped/**.class)
-libraryjars artifacts/in.jar(org/moreskipped/**.class)
দ্বিতীয়ত, প্রক্রিয়াজাত জারটিকে মূল জারের সাথে একীভূত করুন, তবে কেবলমাত্র সেই পথগুলি বাদ দেওয়া হয়েছে।
-injars out/processed.jar
-injars artifacts/in.jar(org/skipped/**.class)
-injars artifacts/in.jar(org/moreskipped/**.class)
-outjars out/merged.jar
-dontshrink
-dontoptimize
-dontobfuscate
ফলাফলটি একত্রীভূত জার যা প্রক্রিয়াজাত প্যাকেজ পাথ এবং এড়িয়ে যাওয়া পাথের সংমিশ্রণ। এই অনুশীলনটি অবৈধ, যদি কেউ নির্দিষ্ট কিছু পাথের প্রক্রিয়া সম্পূর্ণভাবে এড়িয়ে যাওয়ার কোনও উপায় সরবরাহ করতে পারে (যা আমি পাই না)।