2013-07-15 46 views
11

Tôi đã chuyển từ Eclipse sang Android Studio trong vài ngày qua và nhận được hầu hết mọi thứ hoạt động. Tuy nhiên, khi tôi tạo một APK đã ký, có vẻ như ProGuard không bao giờ chạy.Android Studio ProGuard dường như không chạy

Tôi đang sử dụng Trình hướng dẫn APK đã tạo tạo, chọn 'Chạy ProGuard' và chỉ định proguard.cfg làm tệp cấu hình. Quá trình xây dựng chạy không có lỗi và tạo ra một gói ứng dụng chức năng, nhưng gói ứng dụng đó lớn hơn 65% so với quá trình tạo bởi Eclipse. Khi tôi tạo gói ứng dụng thông qua Trình hướng dẫn APK của Android Studio và không chọn 'Chạy Proguard', gói ứng dụng kết quả có cùng kích thước với APK mà ProGuard đã chạy trên đó. Không có mapping.txt, seed.txt hoặc usage.txt được tạo ở bất kỳ đâu trong thư mục dự án của tôi. Tôi đã thử thêm

buildTypes { 
    release { 
     runProguard true 
     proguardFile file('proguard.cfg') 
     proguardFile getDefaultProguardFile('project-android.txt') 
    } 
} 

và các biến thể vào tệp build.gradle của tôi nhưng điều đó cũng không có tác dụng.

Điều này xảy ra trên Android Studio 0.2.0, mặc dù tôi đã nhìn thấy hành vi tương tự trên 0.1.9. Tôi đang làm việc trên Windows 7.

Có ai cho tôi biết điều gì có thể xảy ra không? Tôi sẽ rất vui nếu tôi có thể tìm thấy bản ghi ProGuard được cho là tạo ra.

+0

Tôi cũng không thể chạy chương trình bảo vệ. Bạn có đang tạo gói ứng dụng thông qua Xây dựng -> Tạo APK đã ký không? Nếu có, bạn chọn tệp proguard nào trong hộp thoại sau? Có rất ít thông tin về điều này trên tài liệu ... –

+0

Tôi đang gặp chính xác như vậy, bảo vệ chuyên nghiệp không làm bất cứ điều gì, mặc dù tệp cấu hình được cung cấp trong quá trình "Tạo APK đã ký". Thật không may là hầu như không có thông tin về Android Studio làm việc với Pro Guard. Cũng đã nêu câu hỏi ở đây: http://stackoverflow.com/questions/18087664/generating-a-pro-guard-configuration-file-with-android-studio#comment26529592_18093805 –

Trả lời

2

Hạnh phúc, tôi đã tìm thấy giải pháp. Vấn đề là trước khi tạo gói ứng dụng đã ký, tôi đã sửa đổi tên gói trong AndroidManifest để ghi đè lên một phiên bản cụ thể trong Cửa hàng Google Play. Tuy nhiên, sự thay đổi tên gói này đã không tái cấu trúc tất cả tên gói "nhập khẩu" tương ứng. R; " dòng trong suốt mã. Hôm nay, sau khi tái nhập dự án, nó sẽ không còn xây dựng vì lỗi cố gắng nhập R. Khi tôi sửa đổi tất cả các dòng nhập, không chỉ dự án của tôi xây dựng đúng cách mà còn xuất gói ứng dụng đã được chạy đúng cách chạy ProGuard.

Tôi đoán Android Studio bằng cách nào đó đã lưu vào bộ nhớ cache các dòng "nhập R" và khi ProGuard cố gắng chạy nó không có các giá trị được lưu trong bộ nhớ cache đó và sau đó bị lỗi. Tại sao không có đầu ra lỗi cho tôi thấy, tôi không biết.

0
**in new Gradle system** 

BuildType.runProguard     -> minifyEnabled 
BuildType.zipAlign     -> zipAlignEnabled 
BuildType.jniDebugBuild    -> jniDebuggable 
BuildType.renderscriptDebug   -> renderscriptDebuggable 
ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled 
ProductFlavor.renderscriptNdkMode  -> renderscriptNdkModeEnabled 

hoặc truy cập tại http://tools.android.com/tech-docs/new-build-system

4

Chỉ cần cập nhật của bạn build.gradle

buildTypes {   
    release { 
    minifyEnabled true 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
    } 
} 

Chi tiết Reference. Tôi hy vọng nó sẽ giúp bạn

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