2012-01-04 28 views
9

Tôi đang cố gắng viết các ứng dụng Android với Scala trong Eclipse. Vấn đề tôi gặp phải là tệp APK được triển khai quá lớn - vì bạn không thể liên kết ứng dụng Android với thư viện bên ngoài, mọi mã được sử dụng phải được sao chép vào tệp APK, nhưng hầu hết các ứng dụng Scala không cần hầu hết thư viện Scala. Một nơi nào đó tôi đọc rằng ngay cả một ứng dụng lớn có thể được đóng gói với chỉ 50kb hoặc hơn của thư viện Scala, so với 4mb mà thiết bị Android của tôi là nói với tôi ứng dụng thử nghiệm của tôi mất.Làm cách nào để có thể giảm bớt các ứng dụng scala cho android trong kích thước tệp?

Tôi đã thử trình cắm thêm Treeshaker cho Eclipse và tôi có thể thấy trong cửa sổ tiến trình đang chạy, nhưng dường như nó không làm gì cả. Phân tích nó khỏi dự án của tôi không có tác động đến kích thước tệp cuối cùng. Tôi cũng đã thử cấu hình Proguard, nhưng tôi không thể tìm thấy cấu hình không ảnh hưởng đến kích thước tệp (và tôi nhận ra rằng Proguard chỉ chạy khi sử dụng thuật sĩ xuất của Eclipse, mà tôi đã sử dụng để kiểm tra) hoặc sự cố với các thông báo lỗi khó hiểu, chẳng hạn như "1". (Vâng, ok, toàn bộ thông báo lỗi là "Chuyển sang định dạng Dalvik không thành công với mã lỗi 1", điều này khó có ích hơn vì tôi không thể tìm thấy bất kỳ tài liệu rõ ràng nào về thông báo lỗi đó và nó không cho tôi biết phần nào của mã hoặc cấu hình của tôi đang gây ra sự cố ...)

So. Bất kỳ cái nhìn sâu sắc về cách tôi có thể làm việc này?

+0

Bạn có thể muốn thử plugin Eclipse mới của tôi (https://github.com/banshee/AndroidProguardScala). Bạn chắc chắn muốn đọc nhóm google https://groups.google.com/forum/?fromgroups#!forum/scala-on-android –

Trả lời

6

Hầu hết mọi người sử dụng SBT với ProGuard (theo như tôi biết nó được chạy tự động với sbt android plugin).

Ngoài ra, có khả năng là ship with two dex files in a apk. Điều này cũng giải quyết được nhiều vấn đề, bởi vì hầu hết các hạn chế áp dụng cho các tệp dex, không phải là gói ứng dụng cuối cùng.

Đây là cũ, nhưng có nhiều thông tin tổng quát hữu ích: http://lamp.epfl.ch/~michelou/android/

1

tôi sử dụng AndroidProguardScala như được đưa ra ở đây:

https://stackoverflow.com/a/11084146/1287856

Nó sử dụng Proguard khi xuất khẩu ứng dụng, và nó hoạt động khá tốt.

+0

Đây là liên kết trực tiếp tới plugin: https://github.com/banshee/ AndroidProguardScala –

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