অ্যান্ড্রয়েড স্টুডিওগুলি প্রোগুয়ার্ড ম্যাপিং ফাইলটি কোথায় সংরক্ষণ করে?


182

অ্যান্ড্রয়েড স্টুডিওতে, কোথায় স্বাক্ষরিত এপিএকে সংকলনের পরে প্রোগুয়ার্ড ম্যাপিং ফাইলগুলি তৈরি করা হয়?

আমি নিশ্চিত না যে এটি কাজ করছে না বা আমি কেবল ফাইলের পথটি ভুলে গেছি, এবং আমার বাধ্যতামূলক গুগল / স্ট্যাক ওভারফ্লো অনুসন্ধান এর উত্তর দেয় নি


1
এটি সরকারীভাবে এখানে ব্যাখ্যা করা হয়েছে firebase.google.com/docs/crash/…
জয়কৃষ্ণান প্রধানমন্ত্রী

3
@ জয়াকৃষ্ণান পিএম 3 বছর পরে গুগলকে এটি দেখতে পেয়ে খুশি হয়েছিল।
সিকিউএম

উত্তর:


272

এটি build/outputs/proguard/release/mapping.txtআপনার অ্যাপ্লিকেশন মডিউলের ডিরেক্টরিতে থাকা উচিত।

প্রোগার্ড এবং অ্যান্ড্রয়েড স্টুডিওর সর্বশেষতম সংস্করণে ফাইলটি অবস্থিত build/outputs/mapping/release/mapping.txt


5
উত্পন্ন ফাইল এবং পথ সম্পর্কে আরো তথ্য: developer.android.com/studio/build/shrink-code.html
Helton Isac

যদি আপনার তাত্ক্ষণিক চাল সক্ষম হয়, আপনি ম্যাপিং ফাইলটি দেখতে সক্ষম নাও হতে পারেন। তাত্ক্ষণিক রান অক্ষম করুন এবং আবার বিল্ড করুন।
ফয়জান মুবাশ্বের

1
গ্রেডেল 6.2.2 / গ্রেডল প্লাগইন 3.6.1 এ আপডেট হওয়ার পরে আমাদের জন্য পথগুলি পরিবর্তিত হয়েছিল। /app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt /app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txtনতুন পথ।
কার্স্টেন হেগম্যান

75

আমার জন্য তারা এ 'build/outputs/mapping/release'


16
'বিল্ড / আউটপুট / ম্যাপিং / রিলিজ / ম্যাপিং.টেক্সট'
আলেব

1
হ্যাঁ যে এটি অ্যান্ড্রয়েড স্টুডিও ২.৩.২ এর জন্য উপযুক্ত
শুভ

1
অ্যাপ / বিল্ড / আউটপুট / ম্যাপিং / রিলিজ / ম্যাপিং.টিএসটিসিটি বিসি একটি পৃথক বিল্ড ফোল্ডার ছিল যা ম্যাপিং ফাইলটি ধারণ করে না ...
নিউকাউট

39

build/ডিরেক্টরি গাছের বাইরের কোনও স্থানে ম্যাপিং.টেক্সট ফাইলটি লেখার জন্য পূর্ববর্তীটিকে কনফিগার করার জন্য আমি আরও ক্লিনার পেয়েছি , যাতে এটি আরও সহজেই সংস্করণ নিয়ন্ত্রণে পরীক্ষা করা যায় checked

এটি অর্জন করতে, এটি আপনার proguard-rules.proফাইলে রাখুন:

-printmapping mapping.txt

এটি (সম্ভবত) এটি আপনার proguard-rules.proফাইলের মতো একই ডিরেক্টরিতে স্থাপন করবে । শেষ পর্যন্ত, আপনি সম্ভবত এটি আপনার এপিএল ফাইলের মতো একই ডিরেক্টরিতে এবং একটি সমমানের নাম (যাতে স্বাদ, বিল্ড প্রকারের অন্তর্ভুক্ত থাকতে পারে) দিয়ে লিখতে চান।

নোট: আমার অভিজ্ঞতা, এই হয় না proguard টেমপ্লেট ফাইল (যা অন্য একটি মন্তব্যকারী দ্বারা প্রস্তাব ছিল দ্বারা overruled উত্তর এখানে)।

আপডেট: আপনার যদি একাধিক পণ্যের স্বাদ থাকে তবে এটি আরও অনেক ভাল সমাধান: https://stackoverflow.com/a/31116608/444761


1
এটি আমার সমাধানের চেয়ে ভাল, যেমন আপনি বলেছেন যে আপনি এটির পরে সংস্করণ নিয়ন্ত্রণে রাখতে পারেন।
ক্লাইভ জেফারিজ

আপনি কেন এটির সংস্করণটি নিয়ন্ত্রণ করতে চান? বিল্ড নির্ভর নির্ভর হওয়ায় আপনার প্রতিটি এপিএকের জন্য আপনার এটি প্রয়োজন স্পষ্টভাবে প্রকাশিত। যেহেতু আপনাকে উত্স থেকে পৃথকভাবে এপিপি আপলোড / চেকইন করতে হবে আসলে উত্স ভিসিএসে এটি পরীক্ষা করার দরকার নেই !?
Denny1989

@ Denny1989 আপনি কী বোঝাতে চাইছেন তা নিশ্চিত নয়। আমি একটি APK তৈরি করি এবং এটি সংস্করণ নিয়ন্ত্রণের বাইরে সঞ্চয় করি। আমাকে ম্যাপিং ফাইলটি কোথাও রাখতে হবে। আমি পারে এটা করা APK পাশাপাশি সংরক্ষণ, কিন্তু আমি এটা সংস্করণ নিয়ন্ত্রণ এটি ক্লিনার পাবেন। যাইহোক, আমার কাছে প্রতি প্রকল্পের জন্য কেবলমাত্র একটি রিলিজ APK রয়েছে যাতে ওয়াইএমএমভি।
চিহ্নিত করুন

36

আমি দেখেছি এটি উত্পন্ন হচ্ছে না, তাই আমি এটি নিয়ম ফাইলে যুক্ত করেছি

-printmapping build/outputs/mapping/release/mapping.txt

1
আমি দেখতে পেলাম যে আমি ব্যবহার করছি এমন একটি টেমপ্লেট প্রিন্ট ম্যাপিং ফাইলটিকে দিয়ে মুছে ফেলা হয়েছিল!
ছেলে

1
এটি আমার জন্য সমস্ত অগ্রগামী আউটপুট ফাইলগুলি কাজ করে এবং উত্পন্ন করে।
j2emanue

16

এই প্রশ্নের উত্তর দিতে বেশ দেরি হয়েছে তবে কারও ক্ষেত্রে আমার উত্তর প্রয়োজন।

ডিওবফাসকেটে ম্যাপিং ফাইলের অবস্থান:

প্রোগুয়ার্ড অ্যাপ্লিকেশন অ্যাপ্লিকেশনটিতে বিল্ড / আউটপুট / ম্যাপিং / ফ্ল্যাওয়ার / রিলিজ / ম্যাপিং.টেক্সট সংরক্ষণ করে

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

debug {
    minifyEnabled false
    debuggable true
}

কিছু গোছা:

প্রোগ্রুয়ার্ডের সাথে আপনি যখন রিলিজ বিল্ড তৈরি করবেন প্রতিবার ম্যাপিং.টিএসটিএক্স ফাইলটি ওভাররাইট করা হবে, সুতরাং নতুন রিলিজ তৈরির আগে প্রথমে সেই ফাইলটির ব্যাকআপ নিন। এটি আপনার অ্যাপ্লিকেশনটির পুরানো সংস্করণ থেকে অবহেলিত স্ট্যাক ট্রেসকে সহায়তা করবে।

তা ছাড়া আপনার কোডটি অবলম্বন করার দুটি উপায় রয়েছে:

১. গুগল প্লে কনসোলে আপনার ম্যাপিং.টিএসটি ফাইলটি আপলোড করুন:

গুগল প্লেতে আপনার অ্যাপ্লিকেশন প্রকাশ করার সময়, আপনি আপনার APK এর প্রতিটি সংস্করণের জন্য ম্যাপিং.টেক্সট ফাইলটি আপলোড করতে পারেন। তারপরে গুগল প্লে ব্যবহারকারী-উল্লিখিত সমস্যাগুলি থেকে আগত স্ট্যাকের চিহ্নগুলি ডিফল্ট করবে যাতে আপনি সেগুলি গুগল প্লে কনসোলে পর্যালোচনা করতে পারেন।

2. স্থানীয় এসডিকে সরঞ্জাম retrace.sh/retrace.bat ব্যবহার করুন:

কিছু সময় আপনি নিজের অ্যাপ্লিকেশনটির রিলিজ সংস্করণটি চালাতে চান (বিল্ড রূপে এটি প্রকাশের জন্য এবং এটি চালিয়ে) পরীক্ষা করতে এবং ত্রুটিগুলি সমাধান করে যাতে এটি উত্পাদন না ঘটে (প্লে-স্টোরে প্রকাশিত হলে)।

একটি অস্পষ্ট স্ট্যাক-ট্রেসকে একটি পাঠযোগ্য হিসাবে নিজেকে রূপান্তর করতে, retrace স্ক্রিপ্টটি ব্যবহার করুন ( উইন্ডোজে retrace.bat; ম্যাক / লিনাক্সে retrace.sh )।

এটি <sdk-root>/tools/proguard/bin/ডিরেক্টরিতে অবস্থিত ।

<sdk-root> আপনার সমস্ত অ্যান্ড্রয়েড লাইব্রেরি এবং এসডিএস ইনস্টল করা হয়েছিল এমন জায়গা।

নতুন, পঠনযোগ্য স্ট্যাক ট্রেস তৈরি করে স্ক্রিপ্টটি ম্যাপিং.টেক্সট ফাইল এবং আপনার স্ট্যাক ট্রেস নেয়।

কমান্ড সিনট্যাক্স:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

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

retrace.bat -verbose mapping.txt obfuscated_trace.txt

প্রাক-চেক উত্পাদনের ত্রুটিগুলি যেমন যথেষ্ট কার্যকর তাই আমি স্থানীয় সংস্করণটিকে অবহেলা করতে পছন্দ করি।

আমি আসা করি এটা সাহায্য করবে.


12

আমি সংস্করণ অ্যান্ড্রয়েড স্টুডিও ২.২.২ ব্যবহার করছি । আমার জন্য এটি নিম্নলিখিত অবস্থানগুলিতে অবস্থিত:

ডিবাগের জন্য: \app\build\outputs\mapping\debug\mapping.txt

মুক্তির জন্য: \app\build\outputs\mapping\release\mapping.txt


11

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

এখানে এটি একটি ছবিতে রয়েছে - আপনি ম্যাপিং ফোল্ডারে এটি পাবেন:


2

কারণ আমি বোবা এবং হারিয়ে যাচ্ছি এমনকি যখন কেউ আমাকে বলবে ফাইলটি কোথায়:

cd StudioProjects/fooProject
find . -name "mapping.txt" | xargs less
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.