2016-09-23 10 views
3

스푼 러너 :없음 "정렬되지 않은"의 APK는 파괴, Gradle을 플러그인 2.2.0으로 생성되지 않습니다 안드로이드 Gradle을 플러그인 <code>2.2.0</code>를 사용

buildscript { 
    repositories { 
     maven { url "https://plugins.gradle.org/m2/" } 
    } 

    dependencies { 
     classpath "com.android.tools.build:gradle:2.2.0" 
    } 
} 

하고 ./gradlew assembleDebug assembleDebugAndroidTest을 실행 :

2.2.0과 :

app-debug.apk 
app-debug-androidTest.apk 

2.1.3 :

이 구글 문제를 바탕으로

484,735,863,210 : https://code.google.com/p/android/issues/detail?id=212591 여기에 코멘트 : https://code.google.com/p/android/issues/detail?id=212591#c15을 :

java -jar spoon-runner-1.7.0-jar-with-dependencies.jar \ 
    --debug --fail-on-failure --adb-timeout 90 --no-animations \ 
    --apk app-debug.apk \ 
    --test-apk app-debug-androidTest-unaligned.apk 

오류 :

12:06:48 I/InstrumentationResultParser: test run failed: 'Instrumentation run failed due to 'java.lang.NoClassDefFoundError'' 
2016-09-23 12:06:48 [STRL.testRunStarted] testCount=0 runName=<>.test 
2016-09-23 12:06:48 [STRL.testRunFailed] errorMessage=Instrumentation run failed due to 'java.lang.NoClassDefFoundError' 
2016-09-23 12:06:48 [STRL.testRunEnded] elapsedTime=0 
12:06:48 I/XmlResultReporter: XML test result file generated at /<>/spoon-output/junit-reports/emulator-5554.xml. Total tests 0, 

Hi, we don't generate unaligned apks any more. As part of the improvements to speed things, we generate the apk already aligned. So, instead of two, you just get the final one.

스푼 그것을 실행이 "정렬되지 않은"의 APK를 필요로 테스트 주자

스푼은 "정렬되지 않은"부분 만 사용합니다.

+0

그리고 정렬되지 않은 APK를 생성 하시겠습니까? – antonio

+0

@antonio Square가 정렬되지 않아야합니다. https://github.com/square/spoon을 참조하십시오. –

답변

3

2.2 전에, Gradle을 플러그인이 정렬되지 않은 APK를 생성 한 다음 정렬 zipalign을 실행하는 것입니다하려는 경우 여러 buildTypes을 지정할 수 있습니다. 그래서, 두 명의 apk은 "- 정렬되지 않은"것이고 하나는 특별한 표시없이 정렬되었습니다.

  • APK가 지금은 점진적으로 내장되어, 하나의 파일이 변경 될 때, 해당 파일이 APK 업데이트됩니다 의미 :

    는 2.2이 관련 빌드 파이프 라인에서 많은 개선이 있었다.

  • APK가 정렬되어 생성되므로 별도의 정렬 단계가 필요 없습니다.

이 두 가지의 마지막은 APK (https://source.android.com/security/apksigning/v2.html)에서 V2 서명을 사용 : APK의 변경에 대한 내성 (그리고 확인하는 빠른)입니다 전체 APK 서명을. 이는 zipalign이 이러한 서명을 사용하는 APK에서 더 이상 실행할 수 없음을 의미합니다.

따라서 스토리를 짧게 만들기 위해 2.2 패키지부터 시작하는 것이 빠르며 점증 적이며 불필요한 정렬되지 않은 APK를 생성하지 않습니다.

+1

정확하고 확실합니다 (https://code.google.com/p/android/issues/detail?id=223551#c4). 감사! –

0

그래디언트 파일 내에서 zipalign을 false로 설정하려고 했습니까?

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

당신은 또한 당신이

buildTypes { 
    release { 
     minifyEnabled true 
     shrinkResources true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     zipAlignEnabled false 
     minifyEnabled false 
     shrinkResources false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
+0

나는 그것을했지만 APK를 생성하지 않았다. –

+0

apk를 어떻게 구축 했습니까? 이 경로 사용 : 빌드/빌드 Apk? – Jaythaking

+0

내 질문에 게시 :'./gradlew assembleDebug assembleDebugAndroidTest'. 이걸 로컬에서 테스트 했습니까? –