Có một chủ đề chi tiết here tại hướng dẫn sử dụng dành cho nhà phát triển Android.
Về cơ bản, bạn có nhiều tùy chọn để thực sự giảm kích thước gói ứng dụng của mình bằng cách thu hẹp tài nguyên. Tôi đã thảo luận ngắn gọn về chúng và tôi nghĩ rằng Bật kiểm tra tham chiếu nghiêm ngặt được thảo luận bên dưới sẽ giải quyết vấn đề của bạn, nhưng bạn có thể xem tất cả các tùy chọn có sẵn để giảm kích thước gói ứng dụng của mình.
Tuỳ chỉnh mà nguồn lực để giữ
Khi doc nói, sử dụng xml dưới đây tại res/thô/keep.xml, để quyết định những gì để giữ và những gì không giữ:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
tools:discard="@layout/unused2" />
Và phần còn lại sẽ được quản lý bởi hệ thống xây dựng (Điều này rất hữu ích khi sử dụng các biến thể xây dựng khác nhau).
Enable tham khảo kiểm tra nghiêm ngặt
Nếu bạn có mã của bạn hoặc thư viện tham khảo các nguồn lực của bạn như dưới đây:
getResources().getIdentifier("image1", "drawable", getPackageName())
Sau đó, trong shrinker nguồn trường hợp này xử phòng thủ theo mặc định và các dấu hiệu tất cả các tài nguyên có định dạng tên phù hợp có khả năng được sử dụng và không khả dụng để xóa.
Vì vậy, thêm sau để res/thô/keep.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Thêm này nên giải quyết vấn đề của bạn.
Di chuyển các nguồn lực thay thế không sử dụng
Resource shrinker không loại bỏ các nguồn lực khác, như, nguồn drawable thay thế cho mật độ màn hình khác nhau, tài nguyên chuỗi thay thế cho các ngôn ngữ khác nhau, vv
Vì vậy, bạn có thể tự chọn những gì cần giữ, từ tệp xây dựng của bạn, giả sử bạn muốn giữ các chuỗi trong 'en' locale:
android {
defaultConfig {
...
resConfigs "en", "fr"
}
}
Điều này có thể giảm kích thước đáng kể.
Nếu nguồn lực vẫn được lưu giữ bởi shrinker tài nguyên, sau đó tự loại trừ chúng bằng cách sử dụng phương pháp thảo luận đầu tiên, và xem nếu được biên soạn và xây dựng đúng cách, nếu không, sau đó lý do để giữ cho nguồn tài nguyên bởi shrinker tài nguyên, sẽ trở nên rõ ràng từ trường hợp ngoại lệ được ném trong khi xây dựng.
Hy vọng điều đó sẽ hữu ích!
Vui lòng tham khảo liên kết này, bạn sẽ nhận được câu trả lời http://stackoverflow.com/a/40742213/4069985 –
Không có gì tích hợp cho việc này. Bạn có thể thử [kịch bản Gradle này] (https://stackoverflow.com/a/34525498/115145), mặc dù tôi chưa đưa ra một cảnh quay nào. – CommonsWare
@SrinivasKeerthiprakasam cảm ơn – Hades