আমি এটি সম্পর্কে কিছু তদন্ত করেছি, এবং আমার উপসংহারটি সহজভাবে: বেশ কিছুটা কাজ না করে এটি করা যায় না। আমি যা পেয়েছি তার বিশদ জন্য এই উত্তরটির বাকী অংশটি পড়ুন।
android.jar
আসলে "পাবলিক এপিআই" এর সমন্বয়ে গঠিত framework.jar
এবং core.jar
যা system/frameworks/
ডিভাইসে পাওয়া যায় । android.jar
আমি জাভা লাইব্রেরির শিরোনামকে যা বলব তার মধ্যে এটি এক ধরণের, আসল বাইট কোডের সমস্ত বাস্তবায়ন কেবল একটি throw new RuntimeException("stub");
, এটি আপনাকে বিরুদ্ধে তুলতে দেয় android.jar
(উদাহরণস্বরূপ Eclipse এ), তবে মৃত্যুদন্ড কার্যকর করতে একটি ডিভাইস বা এমুলেটরটিতে সঞ্চালন করতে হয়।
অ্যান্ড্রয়েড SDK এর প্রকাশ্য API দ্বারা শ্রেণীর / পদ্ধতি / ক্ষেত্র হয় সংজ্ঞায়িত করা হয় না সঙ্গে পূর্বে সমাধান @{hide}
javadoc টীকা। অর্থাত এনটোট করা হয় না এমন সমস্ত কিছু এসডিকে অন্তর্ভুক্ত।
android.jar
অবস্থিত উত্সগুলি থেকে তৈরি করা হয়েছে out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
যেখানে নিজেই অবস্থিত DroidDoc সরঞ্জাম দ্বারা উত্পাদিত হয়েছে build/tools/droiddoc
।
ড্রয়েডোক হ'ল সেই সরঞ্জাম (সম্ভবত জাভাদোক থেকে অভিযোজিত, বা জাভাদোক ব্যবহার করে) যা প্রকৃত অ্যান্ড্রয়েড এসডিকে ডকুমেন্টেশন তৈরি করে। পার্শ্ব-প্রতিক্রিয়া হিসাবে এবং সম্ভবত এটি ইতিমধ্যে সমস্ত জাভাডোককে পার্স করছে তাই এটি অ্যান্ড্রয়েড স্টাবগুলিও খুঁজে বের করে android.jar
যা এসডিকে বিতরণ করা হয় যা পরে সংকলিত হয় ।
সুতরাং যে গোপনীয় জিনিসগুলি আপনি রাখতে পারেন তা অন্তর্ভুক্ত করতে যদি আপনি কেবল নির্দিষ্ট অংশগুলি অন্তর্ভুক্ত করতে চান তবে কেবল @hide
টীকাটি সরিয়ে এসডিকে পুনর্নির্মাণ করুন।
তবে আপনি যদি সমস্ত লুকানো অংশগুলি অন্তর্ভুক্ত করতে চান তবে জিনিসগুলি আরও জটিল হয়ে উঠবে। আপনি DroidDoc (প্রাসঙ্গিক উত্সটি অন্তর্ভুক্ত build/tools/droiddoc/src/Stubs.java
) পরিবর্তন করতে পারেন যাতে কোনও কিছুই গোপন হিসাবে সনাক্ত করা যায় না। এটি বেশ তুচ্ছ এবং আমি এটি চেষ্টা করেছি, তবে যে স্টাবগুলি উত্পন্ন হয় তা মোটেই সংকলন করে না।
এখনই আমার উপসংহারটি হ'ল এটি কেবল সম্ভব নয়। আপনি যদি DroidDoc এর যে অংশটি গোপন টীকাগুলি সনাক্ত করেন, সরিয়ে ফেলেন তবে উত্পন্ন স্টাবগুলি কেবল সংকলনযোগ্য নয় এবং সঠিকভাবে সংকলন করতে বেশ খানিকটা কাজের প্রয়োজন হবে।
সুতরাং আপনার প্রশ্নের আমার উত্তর হ'ল: না, অনেক কাজ না করেই এটি করা যায় না। দুঃখিত
mkstubs
সরঞ্জাম সম্পর্কে একটি পাশ নোট । mkstubs
আপনি যখন কোনও এসডিকে অ্যাডোন তৈরি করেন , অর্থাত্ বিক্রেতাদের কাছ থেকে আপনি অ্যান্ড্রয়েড এসডিকে ম্যানেজারে খুঁজে পেতে পারেন এমন অ্যাডনগুলি উদাহরণস্বরূপ স্যামসুং আপনাকে স্যামসুং ফোনগুলিতে নির্দিষ্ট স্টাফের জন্য একটি অতিরিক্ত এপিআই সরবরাহ করে। mkstubs
ড্রয়েডক স্টাবস জেনারেশন প্রক্রিয়ার মতোই কাজ করে, তবে এটি @hide
টীকা ব্যবহার করে না , এটিতে একটি .defs
ফাইল ব্যবহার করা হয় যা আপনার এসডিকে অ্যাডোন থেকে কোন প্যাকেজ / শ্রেণি / ক্ষেত্রগুলি অন্তর্ভুক্ত বা বাদ দিতে পারে তা বর্ণনা করে।
তবে এগুলি সমস্ত প্রশ্নের সাথে অপ্রাসঙ্গিক, কারণ অ্যান্ড্রয়েড এসডিকে বিল্ডটি সরঞ্জামটি ব্যবহার করে নাmkstubs
। (দুর্ভাগ্যক্রমে।)