web-dev-qa-db-ja.com

署名済みAPKの生成:APKのビルド中のエラーAndroid Studio

minifyEnabled trueおよびshrinkResources trueを使用して署名済みAPKを生成できません

アプリレベル: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
11
Sophie

取得しています

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'.

リソースの縮小は、コードの縮小に関連してのみ機能します。

minifyEnabledはAndroidアプリケーションをビルドするときにアプリケーションのサイズを縮小するツールです。

Android {

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

コードを縮小するためにminifyEnabledを使用してアプリをまだビルドしていない場合は、shrinkResourcesを有効にする前にそれを試してください。リソース。

コードとリソースの縮小に関する公式ガイドラインをお読みください

アドバイス

最新バージョンを使用

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

[〜#〜] note [〜#〜]

YouTubeRecyclerViewFragment.Java uses or overrides a deprecated API.

代替の最新バージョンを使用!

10
IntelliJ Amiya

まず、本当に使用する必要があるかどうかを確認しますshrinkResources

その場合、開発者のリンクで提案されているように実行してくださいhttps://developer.Android.com/studio/build/shrink-code.html#shrink-resourcesIntelliJ Amiyaで前述したように、以下のように使用する必要があります

 Android {
 
 buildTypes {
 release {
 shrinkResources true //-常に上記のminifyEnabledを追加-
 minifyEnabled true 
 proguardFiles getDefaultProguardFile( 'proguard-Android.txt')、
 'proguard-rules.pro' 
} 
} 
} 
2
Sri Kanth

プロジェクトをクリーンアップし、署名付きビルド/ Apkを再度生成します。私にとってはうまく機能します。

0
Rajneesh Tyagi

Gradleコマンドで端末を使用して署名付きAPKを生成してみてください。問題がある場所の詳細なログを提供するスタックトレースを確認してください。

Windowsで

$gradle clean

$  gradle --stacktrace assembleRelease

Ubuntuで

$./gradlew clean

$./gradlew --stacktrace assembleRelease 

まだ問題がある場合は、ここにスタックトレースをスタックします

0
Rahul Devanavar

R.raw.Keep(xmlファイル)

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

.Javaソースファイルからこのリソースを参照することを忘れないでください。詳細については、 https://developer.Android.com/studio/build/shrink-code.html を参照してください

apkファイルのサイズが心配な場合は、画像ファイルも縮小することをお勧めします。 RGBチャンネルをインデックス付きチャンネルに変換することで、最大50%のスペースを節約できます。

注:..... YouTubeRecyclerViewFragment.Javaは、非推奨のAPIを使用またはオーバーライドします。

0
Sambhaji Karad

Keytoolバイナリまたはexeを使用して、プライベートキーストアを生成します。以下のリンクの手順。その後、このキーストアを使用してアプリに署名できます。 Javaをインストールすると、Keytoolがインストールされます。

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

0

この :app:proguardRelease UP-TO-DATE ..は、このログを this answer が役立つかどうかを伝えるのに十分なほど完成させません。

すべてのステップで完全なログを取得するには、クリーン+ビルドリリースを再度実行してください。--info gradleオプション、または--debug gradleビルドログでさらに診断メッセージを取得します。

Clean + buildは、gradle/other-toolが一部のファイルを正しく更新せず、古い不正なファイルを再利用するという奇妙な問題を修正することもあります-まれに起こります。

また、(問題をローカライズするためにis実際に他の場所ではなくプロガードミニフィケーションを使用する)に役立つかどうか、ミニフィケーションをOFFに切り替えてください(ソリューションではなく、単に実験)。

もちろん、縮小中にプロガード関連のエラーがある場合は、リンクされた回答からのアドバイスに従うようにしてください。

0
Ped7g

Android Studioでapkに署名できない場合、手動で署名します

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

キーがない場合は、keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000で生成します

manual doとして手動で署名することもできます:

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

署名済みのAPKを確認してください

apksigner verify my-app.apk
0
Kris Roofe