36

Google đã phát hành phiên bản thử nghiệm của JACK compiler mới cho nhà phát triển Android với Android Studio 2.1.Làm thế nào để thực hiện minification và obfuscation với trình biên dịch JACK?

Câu hỏi của tôi là, làm thế nào để chúng tôi kích hoạt sự xáo trộn cho APK bằng JACK? bài viết dưới đây nói rằng JACK thực hiện obfuscation natively và loại bỏ sự cần thiết của Proguard:

Trong khi bài viết sau đây nói rằng JACK tận dụng file cấu hình Proguard (tức là tập tin .pro) để thực hiện obfuscation:

Nó cũng nói rằng

Trong quá trình này Jack cũng xử lý bất kỳ yêu cầu mã rút gọn (thu hẹp và/hoặc obfuscation).

Điều này có nghĩa là gì? Chúng tôi có phải sử dụng tùy chọn minifyEnabled và xác định tệp .pro chứa các tùy chọn Proguard không?

Trong Tóm tắt:

  • Làm thế nào chính xác để chúng tôi đi về phép obfuscation với JACK? Chúng ta có thể bỏ qua việc sử dụng Proguard hay Proguard đóng vai trò thực tế trong quy trình làm xáo trộn, ngay cả khi chúng ta biên dịch với JACK?

  • Hiện JACK hiện có hỗ trợ làm xáo trộn hay không và có sẵn trong phiên bản ổn định (tức là beta/canary) của Android Studio không?

Lưu ý:

Tôi đã gọi vụ sau:

Tham khảo thêm:

Cập nhật:

Các answer bởi Matt Insko là hữu ích, nhưng tôi muốn biết thêm chi tiết, và một, câu trả lời kinh điển chính xác hơn.

+0

Bài đăng này (http://www.androidpolice.com/2014/11/30/jack-and-jill-are-googles-new-compilers-for-android-app-developers/) có thể hữu ích . Nếu bạn thấy [link] này (http://tools.android.com/tech-docs/jackandjill) có một tùy chọn để truyền các file proguard như '--config-proguard' –

+0

Vì vậy, sử dụng dòng lệnh là lựa chọn duy nhất ở đây ? Và chính xác chúng ta xây dựng bằng cách sử dụng JACK từ dòng lệnh như thế nào? –

+0

Ya, tôi đã thử với CLI. Nó hoạt động tốt. Thông tin này được đề cập [ở đây] (https://software.intel.com/en-us/android/articles/an-introduction-to-jack-and-jill-on-x86) và [tại đây] (https: //gist.github.com/stefanhoth/593451dfb4576ec9a21c) –

Trả lời

9

J.A.C.K. obfuscation dường như không được hỗ trợ trong Gradle Plugin mới phát hành (v2.1.0).

Nếu bạn bật JACK khi sử dụng plugin v2.1.0 mới nhất, plugin sẽ cho bạn biết Jack requires Build Tools 24.0.0 or later yêu cầu bạn sử dụng công cụ xem trước.

Sử dụng Android gradle v2.2.0-alpha1, Công cụ xây dựng-v24rc4, Công cụ nền tảng-v24rc3 và Công cụ Sdk-v25.1.7rc1 Tôi đã có thể nhận được obfuscation được thực hiện bởi JACK.

Khi được bật bên trong defaultConfig, nó đã khiếu nại Minifying the variant used for tests is not supported when using Jack., vì minifyEnabled true được định cấu hình trong bản dựng debug.

Vì vậy, tôi đã tạo ra một kiểu tùy chỉnh xây dựng và kích hoạt nó ở đó:

buildTypes { 
    ... 
    custom { 
     minifyEnabled true 
     proguardFiles 'proguard-android-JACK.txt-2.2.0-alpha1' 
     jackOptions { 
      enabled true 
     } 
    } 

Có một vấn đề khi sử dụng proguardFiles getDefaultProguardFile('proguard-android.txt'). Nó bị lỗi với: com.android.jack.api.v01.ConfigurationException: Error while parsing ...,. Vì vậy, tôi chỉ cần loại bỏ các dòng nó phàn nàn về và sau đó chỉ cần tự xác định tập tin cấu hình sửa đổi của tôi.

+0

Xin chào, bạn đã làm việc như thế nào vì AS phàn nàn rằng cấu hình hiện tại (tùy chỉnh) không được ký? – galaxigirl

2

Bạn có thể có một cái nhìn ở đây: https://source.android.com/source/jack.html

Từ các tài liệu chính thức:

(Jack) Xử lý thu hẹp lại, hoang mang, đóng gói lại và multidex. Sử dụng một gói riêng biệt như ProGuard không còn cần thiết nữa.

Xin lưu ý đặc biệt là phần "và shrinking Obfuscation" mà nó nói rằng:

Jack đã bị thu hẹp và hỗ trợ obfuscation và sử dụng Proguard file cấu hình để cho phép thu hẹp và obfuscation tính năng.

Ngoài ra, các tùy chọn được hỗ trợ và bỏ qua cũng được hiển thị.

+3

Cảm ơn, nhưng bạn không giải thích chính xác chúng ta sẽ làm thế nào. Tôi cũng đã đọc (và tham chiếu) bài viết đó, và nó khá khó hiểu và mơ hồ như thế nào chính xác obfuscation được thực hiện. Nếu bạn có thể thử nó, và cung cấp một số chi tiết hơn (nếu nó hoạt động), tôi sẽ biết ơn .... cảm ơn :) –

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