ใน Android Studio ไฟล์การทำแผนที่ ProGuard สร้างขึ้นที่ไหนหลังจากรวบรวม APK ที่ลงชื่อแล้ว?
ฉันไม่แน่ใจว่ามันใช้งานไม่ได้หรือถ้าฉันลืมเส้นทางไฟล์และการค้นหา Google / Stack Overflow ภาคบังคับของฉันไม่ได้ตอบคำถามนี้
ใน Android Studio ไฟล์การทำแผนที่ ProGuard สร้างขึ้นที่ไหนหลังจากรวบรวม APK ที่ลงชื่อแล้ว?
ฉันไม่แน่ใจว่ามันใช้งานไม่ได้หรือถ้าฉันลืมเส้นทางไฟล์และการค้นหา Google / Stack Overflow ภาคบังคับของฉันไม่ได้ตอบคำถามนี้
คำตอบ:
ควรอยู่build/outputs/proguard/release/mapping.txt
ในไดเรกทอรีของโมดูลแอปพลิเคชันของคุณ
ในรุ่นล่าสุดของ ProGuard และ Android สตูดิโอ, build/outputs/mapping/release/mapping.txt
ไฟล์จะอยู่ที่
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
คือเส้นทางใหม่
ฉันพบว่าสะอาดกว่าการกำหนดค่า proguard ให้เขียนไฟล์ mapping.txt ไปยังตำแหน่งที่อยู่ด้านนอกbuild/
ทรีไดเรกทอรีเพื่อให้สามารถตรวจสอบได้สะดวกยิ่งขึ้นในการควบคุมเวอร์ชัน
เพื่อให้บรรลุนี้ใส่ในproguard-rules.pro
ไฟล์ของคุณ:
-printmapping mapping.txt
สิ่งนี้จะเป็นไปได้มากที่สุดในไดเรกทอรีเดียวกับproguard-rules.pro
ไฟล์ของคุณ ท้ายที่สุดคุณอาจต้องการเขียนลงในไดเรกทอรีเดียวกับไฟล์ APK ของคุณและมีชื่อเทียบเท่า (ซึ่งอาจรวมถึงรสชาติ, ประเภทการสร้าง ฯลฯ )
หมายเหตุ: จากประสบการณ์ของฉันไฟล์นี้ไม่ได้ถูกแทนที่ด้วยไฟล์เทมเพลต proguard (ซึ่งผู้วิจารณ์เสนอให้กับคำตอบอื่นที่นี่)
อัปเดต: หากคุณมีผลิตภัณฑ์หลายรสชาตินี่เป็นทางออกที่ดีกว่า: https://stackoverflow.com/a/31116608/444761
มันค่อนข้างสายเกินไปที่จะตอบคำถามนี้ แต่ในกรณีที่มีคนต้องการคำตอบของฉัน
ตำแหน่งของไฟล์การแม็พเพื่อยกเลิกการแสดงข้อความ:
ProGuard บันทึกไฟล์ในแอพ แอพ / บิลด์ / เอาท์พุท / การแมป / FLAVOR / ปล่อย / แมป.txt
โดยทั่วไปในโหมดแก้ไขข้อบกพร่องคุณไม่จำเป็นต้องใช้ไฟล์การจับคู่เนื่องจากโดยทั่วไปแล้วจะมีการปิดการใช้งาน obfuscation หากไม่ใช่กรณีดังกล่าวโปรดตรวจสอบให้แน่ใจในไฟล์ build.gradle ว่าคุณมีรหัสด้านล่างสำหรับชุดการดีบัก
debug {
minifyEnabled false
debuggable true
}
บาง Gotchas:
ไฟล์ mapping.txt จะถูกเขียนทับทุกครั้งที่คุณสร้าง build build ด้วย ProGuard ดังนั้นก่อนอื่นให้สำรองไฟล์นั้นก่อนที่จะสร้าง release ใหม่ มันจะช่วยในการติดตามสแต็คที่ยุ่งเหยิงจากแอปของคุณเวอร์ชั่นเก่า
นอกเหนือจากนั้นมีสองวิธีในการทำให้งงงวยรหัสของคุณ:
1. อัปโหลดไฟล์ mapping.txt ของคุณไปยัง Google play Console:
เมื่อเผยแพร่แอปของคุณใน Google Play คุณสามารถอัปโหลดไฟล์ mapping.txt สำหรับ APK แต่ละเวอร์ชันได้ จากนั้น Google Play จะยกเลิกการติดตามสแต็กขาเข้าจากปัญหาที่ผู้ใช้รายงานเพื่อให้คุณสามารถตรวจสอบได้ใน Google Play Console
2. ใช้เครื่องมือ sdk โลคัล retrace.sh/retrace.bat:
บางครั้งคุณต้องการเรียกใช้แอพเวอร์ชั่นที่วางจำหน่าย (โดยการเปลี่ยนชุดตัวสร้างเป็นรุ่นที่วางจำหน่ายและเรียกใช้) เพื่อตรวจสอบและแก้ไขข้อผิดพลาดเพื่อไม่ให้เกิดปัญหาในการผลิต (เมื่อวางจำหน่ายที่ร้านค้า)
หากต้องการแปลงสแต็กการติดตามแบบ obfuscated เป็นไฟล์ที่อ่านได้ด้วยตัวเองให้ใช้สคริปต์retrace ( retrace.bat บน Windows; retrace.sh บน Mac / Linux )
มันตั้งอยู่ใน<sdk-root>/tools/proguard/bin/
ไดเรกทอรี
<sdk-root>
เป็นสถานที่ที่ติดตั้งไลบรารีและ sdk android ทั้งหมดของคุณ
สคริปต์ใช้ไฟล์ mapping.txt และการติดตามสแต็กของคุณสร้างการติดตามสแต็กใหม่ที่อ่านได้
ไวยากรณ์คำสั่ง:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
ตัวอย่างเช่น:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
ฉันชอบเวอร์ชั่นในท้องถิ่นของ obfuscating เนื่องจากค่อนข้างสะดวกในการตรวจสอบข้อผิดพลาดการผลิตล่วงหน้า
ฉันหวังว่ามันจะช่วย
ฉันกำลังใช้รุ่นAndroid 2.2.2 สำหรับฉันมันตั้งอยู่ในสถานที่ดังต่อไปนี้:
สำหรับการดีบัก:
\app\build\outputs\mapping\debug\mapping.txt
สำหรับการเปิดตัว:
\app\build\outputs\mapping\release\mapping.txt
เพราะฉันเป็นคนโง่และหลงทางแม้จะมีคนบอกฉันว่าไฟล์อยู่ที่ไหน:
cd StudioProjects/fooProject
find . -name "mapping.txt" | xargs less