Tôi đang sử dụng SDK Android mới nhất (4.1) và tôi đã thử xuất khẩu một lọ đã ký với Proguard được bật. Tuy nhiên, sau khi dịch ngược APK được tối ưu hóa, tôi nhận thấy rằng các phương pháp mà tôi đã dự kiến sẽ được gạch chân thì không.Android Proguard không trực tuyến
Tôi biết rằng Proguard đã chạy vì mã đã bị che khuất một cách chính xác. Vì vậy, để khẳng định điều này, tôi đã thêm phương pháp này để Hoạt động của tôi:
private void testInlining()
{
mConfig = null;
}
phương pháp tư nhân này được gọi là một lần duy nhất trong hoạt động của tôi, và bởi vì nó là tư nhân, nó phải rất rõ ràng để tôi ưu hoa mà nó được gọi là chỉ một lần và nó phải được gạch chân.
Tài liệu cho biết rằng tất cả các tối ưu hóa được bật theo mặc định và Proguard "Các phương thức nội tuyến ngắn hoặc chỉ được gọi một lần".
Có một lá cờ cụ thể mà tôi nên cung cấp cho Proguard để bật nội tuyến không?
EDIT
tập tin cấu hình Proguard My chứa
-optimizationpasses 5
-allowaccessmodification
-overloadaggressively
-repackageclasses ''
-dontskipnonpubliclibraryclasses
EDIT
Sau khi sử dụng
-whyareyoukeeping class com.templatecompany.templateappname.EntryPointActivity {*;}
tôi nhận được lý do tại sao phương pháp này là không inlined:
[proguard] com.templatecompany.templateappname.EntryPointActivity: void testInlining() (20:21)
[proguard] is invoked by com.templatecompany.templateappname.EntryPointActivity: com.td.media.ivConnection.IvConfig getIvConfig() (14:15)
[proguard] implements com.td.widget.MainActivity: com.td.media.ivConnection.IvConfig getIvConfig()
[proguard] is invoked by com.td.widget.MainActivity: void onCreate(android.os.Bundle) (140:175)
[proguard] implements android.app.Activity: void onCreate(android.os.Bundle)
[proguard] is a library method.
Nhưng tôi không chắc chắn để xem cách thực tế là phương pháp testInlining
được sử dụng trong phương pháp getIvConfig
đó là lần lượt được sử dụng bởi phương pháp khác ngăn chặn nội tuyến trên testInlining
trong getIvConfig
.
Bạn đã thử điều này chưa? -optimizationpasses 5 Thông tin thêm về http://stackoverflow.com/questions/5068251/android-what-are-the-recommended-configurations-for-proguard?rq=1 – user1154664
Were bạn thực sự có thể để có được Proguard để thực hiện bất kỳ phương thức nào gọi nội dòng? Sử dụng proguard-android-optimize.txt và viết một phương thức riêng tư đơn giản trả về một int, tôi không thể xem nó hoạt động: http://paste.ofcode.org/hbpzPe4EdAnDGnNqNTE7c3 – brAzzi64