Tôi đang nghiên cứu tính năng "chạy ngay lập tức" trong Android Studio. Nhưng có vẻ như nó không hoạt động với proguard. Có ai biết tại sao và làm thế nào để họ làm việc cùng nhau?Chạy tức thì không hoạt động với proguard
môi trường của tôi: Android Studio 2.0 Beta 4
cấp cao nhất của tôi build.gradle
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta4'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
mavenCentral()
jcenter()
}
}
Các build.gradle cho module:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:23.1.1'
}
tôi có thể thấy một số sau "instatn chạy "nhiệm vụ trong bảng điều khiển gradle với các thiết lập ở trên. Và có một tiếng sét màu vàng xuất hiện với nút chạy.
:TestIR:transformClassesWithInstantRunVerifierForDebug
:TestIR:transformClassesWithInstantRunForDebug
:TestIR:transformClasses_enhancedWithInstant+reloadDexForDebug
:TestIR:generateDebugInstantRunAppInfo
:TestIR:transformClassesWithInstantRunSlicerForDebug
Dexing C:\git\android\TestIR\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_1 took 328
Dexing C:\git\android\TestIR\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_0 took 340
Dexing C:\git\android\TestIR\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_2 took 331
Dexing C:\git\android\TestIR\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_5 took 321
Dexing C:\git\android\TestIR\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_3 took 456
Nhưng nếu tôi đặt "minifyEnabled" true, không có "chạy ngay lập tức" nhiệm vụ trong Gradle an ủi bất kỳ, hoặc nút sét vàng hơn.
Có cách nào để chúng hoạt động cùng nhau không?
Tại sao proguard lại chạy với chức năng chạy? Nó chỉ nên chạy cho một ứng dụng đã ký, đúng không? –
Một điều mà tôi đang nghĩ đến là tạo một kiểu xây dựng nhà phát triển có 'minifyEnabled false' và chỉ thử nghiệm trên các thiết bị mới hơn khi phát triển và sau đó chuyển sang gỡ lỗi – Mike
@TaylorCourtney khi minsdk của bạn đủ thấp, bạn cần chạy proguard đơn giản để đáp ứng giới hạn dex. Bạn không cần phải sử dụng nó cho obfuscation trừ khi nó được sản xuất nhưng bạn cần phải cắt thêm phương pháp để kiểm tra trên các thiết bị cũ hơn – Mike