Tôi biết sử dụng Proguard bạn có thể xóa java báo cáo Log.d debug từ phiên bản phát hành https://stackoverflow.com/a/13327603/1527440NDK làm thế nào để loại bỏ báo cáo Log Debug trên phát hành
Nhưng có cách để loại bỏ báo cáo log debug từ NDK C/C++.
Tôi đang sử dụng một tuyên bố xác định để gọi cho họ trong NDK
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
Nhưng với NDEBUG, cuộc gọi tới LOGD sẽ vẫn ở dạng nhị phân, để lại chuỗi tin nhắn của cuộc gọi được các tin tặc tiềm năng trích xuất. Có cách nào sạch hơn bằng cách sử dụng #ifdef hơn xung quanh mọi cuộc gọi để đăng nhập D không? thanks – pt123
'LOGD' là một macro, không phải là một hàm. Bộ tiền xử lý sẽ loại bỏ nó trước khi trình biên dịch nhìn thấy nó. Nó sẽ như thể cuộc gọi không xảy ra chút nào. Ngoài ra, bạn không nên bao quanh mọi cuộc gọi đến 'LOGD'. Đó là định nghĩa * của 'LOGD', vì vậy bạn chỉ phải thực hiện nó một lần cho bất kỳ định nghĩa đã cho nào của' LOGD'. – Joel
Thêm vào vấn đề này, bộ tiền xử lý là cách duy nhất để loại bỏ mọi thứ khỏi nhị phân cuối cùng. Mọi thứ dựa trên ngôn ngữ sẽ lưu trữ các chuỗi ký tự chuỗi của bạn trong bộ nhớ tĩnh. Phương pháp tôi đã hiển thị sẽ xóa hoàn toàn các chuỗi khỏi mã nguồn của bạn. Trình biên dịch sẽ không bao gồm trong phần nhị phân những gì nó không bao giờ nhìn thấy. Và 'NDEBUG' là cơ sở của' khẳng định'. Các xác nhận được xóa khỏi bản phát hành bản phát hành. – Joel