অগ্রগামী নরক - রেফারেন্সযুক্ত শ্রেণি খুঁজে পাচ্ছে না


125

তাই, আমি করছি চেষ্টা কিছু সফ্টওয়্যার মুক্তি কিন্তু Proguard আমাকে একটা মাথা ব্যাথা প্রদান করা হয়।

আমি যখন অগ্রগতি ব্যবহার করে রফতানি করার চেষ্টা করি তখন আমি প্রচুর সতর্কতা পাচ্ছি অর্থাৎ "রেফারেন্সযুক্ত শ্রেণিটি খুঁজে পাচ্ছি না"

উদাহরণ স্বরূপ:

[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME]          You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[ 

সতর্কতাগুলি সরল ফ্রেমওয়ার্কের সাথে সম্পর্কিত বলে মনে হচ্ছে, তাই আমার অগ্রবর্তী গানের কনফিগারেশনের ফাইলটিতে আমি নিম্নলিখিতগুলি যুক্ত করেছি:

-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar

pathtoprojecttolibsআমার প্রকল্প দ্বারা রেফারেন্সযুক্ত জারের পথে কোথায় ?

এটি কোনও পার্থক্য করে না।

যদি সরল ফ্রেমওয়ার্কের রেফারেন্স জাভাক্স আমি এটিকে অগ্রাহ্য করার জন্য অগ্রগামীকে বলতে পারি ??

কোন ধারনা?


1
আপনি কি কেবল গাছ কাটার জন্য অগ্রসর ব্যবহার করছেন? যদি তাই হয়, আপনি কি ফাইলটি আকার না ব্যবহার করে পরীক্ষা করেছেন? অগ্রসর যখন রিফ্লেকশন ব্যবহার করে অ্যাক্সেস করা এমন কিছু বের করে দেয় উদাহরণস্বরূপ, রানটাইম বিরতি না পাওয়া পর্যন্ত আপনি খুঁজে পাবেন না তাই সত্যই হওয়া দরকার, সত্যই নিশ্চিত যে আপনার এটি প্রয়োজন।
Alun

আমি সহজেই কোডটিকে সহজেই টানানো রক্ষা করার চেষ্টা করার জন্য এটি ব্যবহার করছিলাম? আপনি কি এর মূল্য মনে করেন?
iasksillyquestions

3
যদি সঠিক কনফিগারেশনের সাথে চালিত হয় এবং আপনার ফলাফল অ্যাপটি সঠিকভাবে পরীক্ষা করা হয় তবে লিসটেনটোরিক প্রোগার্ডটি পুরোপুরি ঠিক আছে। আমি নিশ্চিত যে গুগল এমনকি এর ব্যবহারের প্রস্তাব দেয়। গুগল অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির সাথে প্রগার্ড ব্যবহারের জন্য প্রচুর গাইড / উদাহরণ সরবরাহ করে।
ক্র্যাকারজ্যাক

প্রোগার্ড একটি ভাল সরঞ্জাম তবে গুগল সুপারিশ করছে এটি ডেক্স-ফর্ম্যাটে অন্য যে কোনও কিছু হিসাবে বেঁধে দেওয়া আকারের সীমাবদ্ধতার কারণে এটি সম্ভবত কমপক্ষে অনেক বেশি। (দেখুন code.google.com/p/android/issues/detail?id=7147 )
Alun

5
@ অ্যালুন, এর কারণ নয়। আমরা যারা আমাদের অ্যাপ্লিকেশনগুলি ইঞ্জিনিয়ার বিপরীত করতে চাই না, বা যারা জলদস্যুতা রোধ করতে 'চেষ্টা' করার জন্য লাইসেন্সিং ব্যবহার করে তাদের হ্যাকারদের পক্ষে আরও শক্ত করা যাতে এই জাতীয় একটি অনর্থক সরঞ্জাম ব্যবহার করা উচিত। আপনার অ্যাপ্লিকেশনটিকে কম স্থান গ্রহণ করাও শেষ ব্যবহারকারীর জন্য একটি উপকারী এবং এই সরঞ্জামগুলি দ্বারা অপ্টিমাইজেশনও রয়েছে ... তবে আরও একটি সুবিধা।
ক্রিস্টোফার পেরি

উত্তর:


128

org.simpleframework.xml.stream.StreamReaderআপনার কোড উল্লেখ করে javax.xml.stream.events.XMLEvent। পরবর্তী ক্লাসটি জাভা রানটাইমের ( rt.jar) অংশ কিন্তু অ্যান্ড্রয়েড রানটাইমের ( android.jar) অংশ নয় , সুতরাং প্রোগুয়ার্ড হুঁশিয়ারি দিয়েছে যে কিছু ভেঙে যেতে পারে। যদি আপনি নিশ্চিত হন যে আপনার অ্যাপ্লিকেশনটি যেভাবেই কাজ করে তবে আপনি উল্লেখ করতে পারেন

-dontwarn javax.xml.stream.events.**

প্রোগার্ড নরক?


15
এটি আমার জন্য এটি ঠিক করে নি, তবে এটি করেছে-dontwarn javax.xml.**
Jeshurun

8
যুক্ত করা -libraryjars <java.home>/lib/rt.jarআমার জন্য সমস্যাটি স্থির করে।
গৌতম

3
আমি যেমন javax.xml.stream.XMLInputFactory সম্পর্কে অতিরিক্ত সতর্কবার্তা পেয়েছিলাম তাই আমি ব্যবহার-dontwarn javax.xml.stream.**
spatialist

1
আমি কীভাবে -dontwarnজিইউআই গান গাইতে পারি ?
টোমা জ্যাটো - মনিকা

2
প্রাগার্ড জাহান্নাম চালিয়ে যাচ্ছে, আমাকে মেরে ফেলুন এবং এই ব্যথাটি সম্পন্ন করুন।
জোশ


5

এই ত্রুটিটি ঘটে কারণ আপনি যে লিবগুলি ব্যবহার করেন সেগুলি অন্যান্য লিবগুলির উপর নির্ভর করে যা বাস্তবে ব্যবহৃত হয় না, তবে প্রোগার্ড তাদের সন্ধান করে। এই সতর্কতাগুলি অক্ষম করতে আপনার অ্যান্ড্রয়েড প্রকল্পে আপনার প্রগর্ড-rules.pro ফাইলটিতে
আপনার -ডন্টওয়ার্ন লাইন যুক্ত করুন ।

এখানে চিত্র বর্ণনা লিখুন

আপনার ত্রুটির স্ট্যাকট্রেসে আপনার অগ্রগতি -rules.pro- এ আপনাকে কোন নির্ভরতা যুক্ত করতে হবে তা আপনি খুঁজে পেতে পারেন।


2

আপনার প্রগার্ড কনফিগারেশনে এটি অন্তর্ভুক্ত করা উচিত:

-dontskipnonpubliclibraryclasses

ঠিক আছে, এটি আমার জন্য সেই সময়টি করেছিল ... ~ 4 বছর আগে ... জিনিসগুলি তখন থেকে পরিবর্তিত হতে পারে :) যাইহোক কমপক্ষে 2 জন অন্য ব্যক্তির পক্ষে কাজ করেছেন বলে মনে হয়।
ক্র্যাকারজ্যাক

ডিফল্ট অগ্রগতি- android.txt এর মধ্যে ইতিমধ্যে এই লাইন রয়েছে।
ক্রিস্টিনা ডি রিতো

1
@ অলটাইমিয়া যে প্রতিশ্রুতিবদ্ধ হয় 2013 থেকে, এই পোস্টটি 2011 সালে তৈরি করা হয়েছিল
ক্র্যাকারজ্যাক

2

আমার ম্যাজিক কী যা আমার অনুসন্ধানের সময়গুলি সমাধান করেছে: এটিকে প্রগ্রেড-অ্যান্ড্রয়েড.টিএসটিএস্টে যুক্ত করুন

-dontskipnonpubliclibraryclassmembers

0

হুম। এই সতর্কতাটি পড়লে মনে হবে আপনি যে লাইব্রেরিটি ব্যবহার করার চেষ্টা করছেন সেটি javax.xML.stream.events এর উপর নির্ভরশীলতা রয়েছে। আমি মনে করি না যে নেমস্পেসটি আসলে অ্যান্ড্রয়েডের মধ্যে অন্তর্ভুক্ত। ( প্যাকেজ সূচক দেখুন )।

অগ্রগতি ব্যবহার না করে এটিকে এমুলেটরটিতে স্থাপন করার চেষ্টা করুন এবং দেখুন এটি কার্যকর হয় কিনা। যদি সতর্কবাণীটি সঠিক হয় তবে আমার অনুমান কোন হবে না।


হাই, যদি এটি অগ্রগতি ছাড়াই এমুলেটরে কাজ করে, এর অর্থ সতর্কতাগুলি সঠিক নয়? আমি কেন এই ধরণের অনুরূপ সতর্কতা ছিল তা জানার চেষ্টা করছি। আমি কেবল সতর্কতাগুলি দমন করতে চাই না।
মিশেল শিহ

0

আমি মনে করি এটি একটি প্রান্তের মামলা তবে আমার ক্ষেত্রে আমার জেনকিনস অগ্রগামী বিল্ড ফোল্ডারটি পুরোপুরি পুরানো কোডের সাথে কাজ করার চেষ্টা করেছিল যা আর ছিল না - যদি কারও একই সমস্যা থাকে।


0

আমার ক্ষেত্রে আমি কোনও পরিবর্তন করি নি এবং সতর্কতা দেখাতে শুরু করেছে। সমস্যাটি ছিল ভাঙ্গা গ্রেড ক্যাশে নিয়ে। আমার অন্য উত্তর পরীক্ষা করে দেখুন । আমি এটি সাথে ভাগ করে নিই কারণ সমস্যাটি পেতে আমার 2 ঘন্টা সময় নিয়েছে:]


0

proguard-rules.proগ্রেড স্ক্রিপ্ট ডিরেক্টরিতে আপনার ফাইলে এই লাইনটি যুক্ত করুন :

-dontwarn package.class.name.**

package.class.nameজার ফাইলের ক্লাসের নাম সহ প্যাকেজের নাম কোথায় যুক্ত করা হয়েছে।

উদাহরণ স্বরূপ:

-dontwarn com.myexternalclass.utils.**
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.