วิธีเพิ่มสัญลักษณ์การดีบักให้กับ build.gradle

ฉันได้สร้าง android build ของแอปพลิเคชัน Flutter ของฉันแล้ว

จากนั้นฉันก็สร้างรุ่นการทดสอบภายในขึ้นมา มันกำลังแสดงคำเตือน

App Bundle นี้มีโค้ดแบบเนทีฟ และคุณยังไม่ได้อัปโหลดสัญลักษณ์การแก้ไขข้อบกพร่อง เราขอแนะนำให้คุณอัปโหลดไฟล์สัญลักษณ์เพื่อให้วิเคราะห์และแก้ไขข้อขัดข้องและ ANR ได้ง่ายขึ้น

โดยพื้นฐานแล้วสิ่งที่ฉันต้องทำคือเพิ่มไฟล์ต่อไปนี้ลงในไฟล์ build.gradle ตามลิงก์ที่แสดง

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

ฉันคิดว่ามันคือ android/app/build.gradle ที่พวกเขากำลังพูดถึง

ไม่แน่ใจว่าฉันต้องเพิ่มบรรทัดนี้ไปที่ใดในไฟล์นั้น

ใครสามารถชี้ให้เห็นว่าจะเพิ่มบรรทัดนี้ที่ไหน?


person Janaka    schedule 12.08.2020    source แหล่งที่มา
comment
ใครสามารถให้ความช่วยเหลือเกี่ยวกับเรื่องนี้ได้บ้าง?   -  person Janaka    schedule 13.08.2020


คำตอบ (4)


หากต้องการใช้ตัวเลือก ndk debugSymbolLevel ตามที่เขียนไว้ใน เอกสาร คุณต้องมี Android ปลั๊กอิน gradle 4.1 หรือใหม่กว่า ในขณะที่เขียนเวอร์ชัน 4.1 ล่าสุดคือ 4.1.2

คุณจะต้องติดตั้ง ndk และ cmake สำหรับ android studio ด้วย

ใน android build.gradle ของคุณ คุณต้องตั้งค่าปลั๊กอิน android gradle เวอร์ชัน 4.1.2:

buildscript {
    ...
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        ...
    }

จากนั้นใน android/app build.gradle ให้เพิ่ม:

...
android {
    ...
    ndkVersion "21.3.6528147" # you see the ndk version in the android studio sdk-manager
    ...
    buildTypes {
        release {
            ...
            ndk {
                debugSymbolLevel 'SYMBOL_TABLE'
            }
        }   
    }
}

เมื่อคุณรันแล้ว: flutter build appbundle มันควรจะเสร็จสิ้นหลังจากนั้นครู่หนึ่งด้วย appbundle ที่มีขนาดเป็นสองเท่า

person Adam    schedule 16.08.2020
comment
ขั้นต่ำ gradle-6.6.1-all.zip ใน gradle-wrapper.properties ที่จำเป็นสำหรับปลั๊กอิน gradle (4.2.0-alpha12') ล่าสุด - person Pratik Butani; 25.09.2020
comment
gradle-6.5 เป็นขั้นต่ำ เพียงเปลี่ยนเวอร์ชันปลั๊กอิน: classpath 'com.android.tools.build:gradle:4.1.0' ในไฟล์ gradle ระดับบนสุด สิ่งนี้จะแจ้งให้แก้ไข gradle และจะติดตั้ง 6.5 โปรดทราบว่าจำเป็นต้องใช้ Android Studio เวอร์ชัน 4.1 ขึ้นไป - person user3508953; 16.10.2020
comment
น่าทึ่งมาก ขอบคุณ! คำถาม: ทำไมต้องเลือก 'SYMBOL_TABLE' มากกว่า 'FULL' ? - person pierrea; 23.10.2020
comment
สวัสดี @pierrea คุณลักษณะทั้งสองได้อธิบายไว้ในลิงค์แรกของคำตอบ โดยพื้นฐานแล้วคือจำนวนข้อมูลการดีบักที่คุณต้องการรวม: Note: There is a 300 MB limit for the native debug symbols file. If your debug symbols footprint is too large, use SYMBOL_TABLE instead of FULL to decrease the file size. - person Adam; 25.10.2020
comment
คุณรู้หรือไม่ว่าตัวเลือกการกำหนดค่านี้ยังรับสัญลักษณ์ดีบัก unstripped ที่รวมอยู่ใน library *.aar ซึ่งดาวน์โหลดเป็น Maven Artifact ด้วยหรือไม่ - person JJD; 03.02.2021
comment
หาก Appbundle มีขนาดใหญ่เป็น 2 เท่า แอปใน Play Store จะเพิ่มขนาดเป็น 2 เท่าด้วยหรือไม่ - person kyu; 12.05.2021
comment
คงจะสมเหตุสมผลสำหรับฉัน คุณยังสามารถเรียกใช้ flutter build appbundle --analyze-size เพื่อดูว่ามีอะไรอยู่ข้างใน โดยทั่วไปคุณจะเพิ่มข้อมูลการแก้ไขข้อบกพร่องให้กับคุณที่สร้างขึ้นสำหรับการทดสอบเบต้า แต่ไม่ใช่ในรุ่นที่ใช้งานจริง - person Adam; 13.05.2021

มีสองที่ใน app/build.gradle ซึ่งคุณสามารถระบุการรวมกลุ่มสัญลักษณ์การดีบักเข้ากับแอปของคุณได้ หากคุณใช้ android.defaultConfig.ndk.debugSymbolLevel มันจะใช้กับบิลด์ทุกประเภท (เช่น ทั้งบิลด์แก้จุดบกพร่องและรีลีส) ในทางกลับกัน หากคุณใช้ android.buildTypes.release.ndk.debugSymbolLevel มันจะใช้กับรุ่น release ของคุณเท่านั้น

ต้องเพิ่มตัวเลือกเหล่านี้ลงในไฟล์ app/build.gradle ของคุณตามที่คุณเดาถูกต้อง เมื่อคุณเห็นคุณสมบัติบิลด์ที่อยู่ในเครื่องหมายจุดนี้ จริงๆ แล้วคุณสมบัตินั้นจะสอดคล้องกับบล็อกที่ซ้อนกันใน build.gradle ซึ่งจะมีลักษณะดังนี้:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId 'com.example.foo'
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 42
        versionName "4.0.2"
        ndk {
            debugSymbolLevel 'SYMBOL_TABLE'
        }
    }
    // Rest of the file
}

person Alberto    schedule 14.08.2020

ใช้ Android เวอร์ชัน 4.1 ขึ้นไป ปัจจุบัน 4.1 RC 3 และ 4.2 Canary 13 พร้อมใช้งาน และในทำนองเดียวกัน ใช้ com.android.tools.build:gradle 4.1 ขึ้นไป คุณสามารถค้นหาเวอร์ชันที่เหมาะสมได้ จากที่นี่

จากนั้นใช้บรรทัดนี้ใน android -› defaultConfig ในไฟล์ build.gradle ของแอปของคุณ

    ndk { debugSymbolLevel 'FULL' }
person Sid.The.Biker    schedule 07.10.2020

หากไม่มีวิธีแก้ปัญหาใดได้ผล คุณสามารถสร้างแอปพลิเคชัน JNI ตัวอย่างจากเทมเพลตโครงการของ Android Studio ได้ สร้างและตรวจสอบว่าสร้างสำเร็จและติดตั้งบนอุปกรณ์หรือไม่

ฉันได้ตรวจสอบแอป build.gradle แล้ว ตรวจสอบ build.gradle ของ Flutter และฉันได้เพิ่มเพื่อให้มันใช้งานได้:

defaultConfig {

    // append below:
    externalNativeBuild {
            cmake {
                cppFlags "-std=c++17"
            }
        }
}

person Michał Dobi Dobrzański    schedule 23.04.2021