2013-07-22 35 views
6

Khi xây dựng dự án Android của tôi, tôi đã thêm dòng sau vào file build.gradle để cho phép Proguard:Android Gradle xây dựng kết quả apk chứa cả obfuscated và các lớp phi obfuscated

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile '../common/proguard-shared.txt' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
    } 
    } 

Tất cả mọi thứ được xây dựng ổn NHƯNG khi Tôi tháo rời tập tin dex kết quả, nó chỉ ra rằng cả hai tập tin obfuscated và không obfuscated là có.

Ví dụ, cả hai đều phổ biến.Base64 và common.a tồn tại, đầu tiên không bị xáo trộn, trong khi thứ hai là không bị xáo trộn.

Không chắc chắn liên quan của nó, nhưng bản thân dự án có cấu trúc không điển hình. Đây là kết quả của việc chúng tôi có một cơ sở mã Android lớn với hơn 40 ứng dụng Android. Chúng tôi đang cố gắng để tạo ra một dòng chảy dựa trên dòng chảy xây dựng side-by-side của eclipse hiện có dựa trên xây dựng. Nếu tất cả diễn ra tốt đẹp, chúng tôi dự định thay đổi cấu trúc tệp thành chế độ bản địa hơn, và bắt đầu sử dụng các hương vị và kiểu dựng sẵn với nhiều thư viện mà chúng tôi tạo để phù hợp với việc thiếu hương vị và .

dự án E trên dựa vào một chuỗi các thư viện như thế:

E -> D -> C -> B -> A

ví dụ Dự án E phụ thuộc vào thư viện D phụ thuộc vào thư viện C ... tất cả các con đường lên đến A.

Trả lời

7

Sau khi xem xét điều này, tôi phát hiện ra đây là vấn đề nếu bạn xây dựng lần đầu tiên mà không cần proguard. nó với nó được kích hoạt. Điều này là do chế độ tăng dần của dex.

Bạn có thể làm sạch sau khi bật proguard và nó sẽ sửa lỗi này.

Chỉnh sửa: Trước đây tôi đã chỉ ra rằng bạn có thể vô hiệu hóa chế độ gia tăng trong dex, nhưng hóa ra điều đó thực sự không hiệu quả!

+0

Hoạt động, cảm ơn, @Xav! Bất kỳ cách nào được đề xuất để "buộc" sạch sẽ trước khi tạo ra một ứng cử viên phát hành? – Guy

+2

Does '' 'gradle clean assembleRelease''' làm việc cho bạn? –

+0

@ThuyTrinh nó. Chỉ cần đảm bảo bạn thực hiện "sạch" cho tất cả các phụ thuộc (nghĩa là nếu bạn có một dự án đa mô-đun, hãy dọn sạch thư mục gốc trước, và sau đó assembleRelease submodule bạn cần). – Guy

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