2016-12-25 69 views
5

Tôi không thể tạo ra Signed APK sử dụng minifyEnabled trueshrinkResources trueTạo ra Signed APK: Lỗi trong khi xây dựng APK hỗ trợ Android Studio

App Level: build.gradle

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.0' 
    } 
} 
apply plugin: 'com.android.application' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion '22.0.1' 

    defaultConfig { 
     applicationId "......." 
     minSdkVersion 14 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     debug { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 

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

    configurations { 
     compile.exclude group: "org.apache.httpcomponents", module: "httpclient" 
    } 
} 

dependencies { 
    compile 'com.android.support:design:23.0.1' 
    compile 'com.android.support:cardview-v7:23.0.1' 
    compile 'com.android.support:recyclerview-v7:23.0.1' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.google.apis:google-api-services-youtube:v3-rev149-1.20.0' 
    compile 'com.google.http-client:google-http-client-android:1.20.0' 
    compile 'com.google.api-client:google-api-client-android:1.20.0' 
    compile 'com.google.api-client:google-api-client-gson:1.20.0' 
    compile files('libs/YouTubeAndroidPlayerApi.jar') 
    compile 'com.github.clans:fab:1.6.2' 
} 

MessageView

Information:Gradle tasks [:app:assembleRelease] 
:app:preBuild UP-TO-DATE 
:app:preReleaseBuild UP-TO-DATE 
:app:checkReleaseManifest 
:app:preDebugBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE 
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE 
:app:prepareComGithubClansFab162Library UP-TO-DATE 
:app:prepareReleaseDependencies 
:app:compileReleaseAidl 
:app:compileReleaseRenderscript 
:app:generateReleaseBuildConfig 
:app:generateReleaseAssets UP-TO-DATE 
:app:mergeReleaseAssets 
:app:generateReleaseResValues UP-TO-DATE 
:app:generateReleaseResources 
:app:mergeReleaseResources 
:app:processReleaseManifest 
:app:processReleaseResources 
:app:generateReleaseSources 
:app:processReleaseJavaRes UP-TO-DATE 
:app:compileReleaseJavaWithJavac 
Note: .....YouTubeRecyclerViewFragment.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Note: ....GetPlaylistAsyncTask.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 
:app:compileReleaseNdk UP-TO-DATE 
:app:compileReleaseSources 
:app:proguardRelease UP-TO-DATE 
:app:dexRelease 
:app:shrinkReleaseResources 
Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45% 
Note: If necessary, you can disable resource shrinking by adding 
android { 
    buildTypes { 
     release { 
      shrinkResources false 
     } 
    } 
} 
:app:validateExternalOverrideSigning 
:app:packageRelease FAILED 
Error:Execution failed for task ':app:packageRelease'. 
> Unable to compute hash of ....\app\build\intermediates\classes-proguard\release\classes.jar 
Information:BUILD FAILED 
Information:Total time: 7.45 secs 
Information:1 error 
Information:0 warnings 
Information:See complete output in console 
+0

Bạn có thể chỉnh sửa câu trả lời của mình bằng mã nguồn trong 'YouTubeRecyclerViewFregment' không? Có vẻ như bạn đang sử dụng một số API không dùng nữa –

Trả lời

0

Điều này :app:proguardRelease UP-TO-DATE .. làm cho nhật ký này không đủ để nói nếu this answer sẽ giúp đỡ hay không.

Hãy làm sạch + xây dựng lại bản phát hành để có nhật ký đầy đủ với tất cả các bước, bạn có thể muốn thêm --info vào tùy chọn gradle hoặc thậm chí --debug để nhận thêm thông báo chẩn đoán trong nhật ký xây dựng gradle.

Làm sạch + bản dựng cũng có thể khắc phục một số vấn đề kỳ lạ của công cụ gradle/other-not không chính xác cập nhật một số tệp và sử dụng lại tệp cũ không chính xác - hiếm khi xảy ra.

Cũng cố gắng chuyển đổi tối thiểu TẮT (không phải giải pháp, chỉ thử nghiệm), cho dù có giúp (để bản địa hoá vấn đề thực sự với giảm thiểu proguard chứ không phải ở nơi khác).

Và tất nhiên nếu có lỗi liên quan đến proguard trong quá trình rút gọn, hãy thử làm theo lời khuyên từ câu trả lời được liên kết.

0

Nếu bạn không thể ký gói ứng dụng trong Android Studio, tay ký nó với

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name 

nếu bạn không có chìa khóa, tạo ra nó với keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Bạn cũng có thể tự ký như manual làm:

keytool -genkey -v -keystore my-release-key.jks-keyalg RSA -keysize 2048 -validity 10000 -alias app 
zipalign -v -p 4 my-app-unaligned.apk my-app.apk 
apksigner sign --ks my-release-key.jks my-app.apk 

kiểm tra các apk ký

apksigner verify my-app.apk 
6

Bạn đang nhận được

Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45% 
Note: If necessary, you can disable resource shrinking by adding 
android { 
    buildTypes { 
     release { 
      shrinkResources false 
     } 
    } 
} 
:app:validateExternalOverrideSigning 
:app:packageRelease FAILED 
Error:Execution failed for task ':app:packageRelease'. 

Resource thu hẹp chỉ hoạt động kết hợp với mã thu hẹp.

minifyEnabled là công cụ Android sẽ giảm kích thước ứng dụng của bạn khi bạn xây dựng ứng dụng.

android { 

    buildTypes { 
     release { 
      shrinkResources true // This must be first 
      minifyEnabled true // This must be after shrinkResources 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 
} 

Nếu bạn chưa xây dựng ứng dụng của bạn sử dụng minifyEnabled cho mã thu hẹp lại, sau đó cố gắng mà trước shrinkResources cho phép, bởi vì bạn có thể cần phải chỉnh sửa tập tin proguard-rules.pro của bạn để giữ lớp học hay các phương pháp được tạo hoặc được gọi động trước khi bạn bắt đầu xóa tài nguyên.

Vui lòng đọc Hướng dẫn chính thức về Shrink Your Code and Resources

Tư vấn

Sử dụng phiên bản mới nhất

compileSdkVersion 25 
buildToolsVersion '25.0.1' 
targetSdkVersion 25 
compile 'com.android.support:appcompat-v7:25.1.0' // set other 25.1.0 

LƯU Ý

YouTubeRecyclerViewFragment.java uses or overrides a deprecated API. 

Sử dụng phiên bản mới nhất thay thế.

0

Cố gắng tạo APK đã ký bằng thiết bị đầu cuối bằng lệnh gradle xem dấu vết ngăn xếp sẽ cung cấp cho bạn nhật ký chi tiết có sự cố.

Trong Windows

$gradle clean

$ gradle --stacktrace assembleRelease 

Trong Ubuntu

$./gradlew clean

$./gradlew --stacktrace assembleRelease 

nếu bạn vẫn còn có vấn đề bài bạn stack trace đây

1

kiểm tra đầu tiên cho dù bạn thực sự cần phải sử dụng shrinkResources

Nếu vậy, làm như đề xuất trong các nhà phát triển liên kết https://developer.android.com/studio/build/shrink-code.html#shrink-resources nêu trên bởi IntelliJ Amiya, bạn phải sử dụng như bên dưới

 
android { 

    buildTypes { 
     release { 
      shrinkResources true // -- always add this above minifyEnabled -- 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 
} 
0

R.raw.Keep (xml fil e)

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:shrinkMode="strict" /> 

Đừng quên tham khảo tài nguyên này từ tệp nguồn .java. Để biết thêm chi tiết, hãy xem https://developer.android.com/studio/build/shrink-code.html

nếu bạn lo lắng về kích thước tệp APK của mình thì thực hành tốt để thu nhỏ tệp hình ảnh. Đó là chuyển đổi kênh RGB thành kênh được lập chỉ mục, điều này có thể tiết kiệm thêm tới 50% không gian.

Lưu ý: ..... YouTubeRecyclerViewFragment.java sử dụng hoặc ghi đè API không dùng nữa.

0

Sử dụng nhị phân Keytool hoặc exe để tạo kho khóa riêng. Hướng dẫn trong liên kết dưới đây. Sau đó, bạn có thể đăng ký ứng dụng của mình bằng cách sử dụng kho khóa này. Keytool được cài đặt khi bạn cài đặt Java.

http://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html

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