2016-11-20 29 views
9

Tôi đã gặp sự cố này khi minifyEnabled và shrinkResources cung cấp cho tôi các kết quả tối ưu phụ theo nghĩa; khi tôi đã bao gồm,xóa nội dung không được sử dụng khỏi thư viện của bên thứ ba

'com.google.android.gms:play-services-places:9.6.1' 

Tôi chưa sử dụng API đăng nhập của Google, tôi nhận được rất nhiều hình ảnh đăng nhập. sign_in_images

Làm cách nào để loại bỏ chúng khỏi APK của tôi? Họ dường như thêm một chút công bằng của KB.

Tôi đang sử dụng trình bảo vệ bằng cách thu nhỏ và thu nhỏ tài nguyên như đã giải thích ở trên.

+0

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 –

+1

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

+0

@SrinivasKeerthiprakasam cảm ơn – Hades

Trả lời

4

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!

+0

Tôi đã thử tất cả những phương pháp đó. Không có gì hiệu quả. – Hades

3

Nếu không có gì khác hoạt động để thực hiện xây dựng hệ thống tự động phát hiện các nguồn tài nguyên chưa sử dụng, bạn có thể muốn thử một cách rõ ràng không bao gồm những thông qua packagingOptions DSL như:

android { 
    packagingOptions { 
     exclude '/**/common_google_signin*.png' 
    } 
} 
3

Có thể có một số khả năng để giảm kích thước ứng dụng và loại bỏ tài sản không sử dụng.

Bạn có thể xóa nội dung chưa sử dụng từ (':lib') thư viện dự án.

Nếu bạn đã nhập @aar tập tin hơn bạn có thể làm điều gì đó như thế này

compile ('com.facebook.android:facebook-android-sdk:[email protected]'){ 
    exclude module: 'support-v4' 
} 

Tuy nhiên chúng ta có file không sử dụng trong @aar tập tin hơn tìm cách khác để thay thế mà @aar để (':lib'), loại bỏ tài sản từ đó.

Các vấn đề liên quan