8

Gradle を使用して Android プロジェクトをコンパイルしています。

buildTypes {
    release {
        signingConfig signingConfigs.release 
        applicationVariants.all { variant ->
            def file = variant.outputFile
            def fileName = file.name
            fileName = fileName.replace(".apk", "-renamed.apk")
            variant.outputFile = new File(file.parent, fileName)
        }
    }
}

すべての出力ファイルの名前が変更されるわけではなく、常に 1 つのファイルがスキップされます。なんで?

myapp-debug-unaligned-renamed.apk    <-renamed, OK!
myapp-release.apk                    <-NOT renamed, WRONG!
myapp-release-unaligned-renamed.apk  <-renamed, OK!
4

3 に答える 3

17

このコードを使用して解決しました:

buildTypes {
    release {
        signingConfig signingConfigs.release 
    }

    applicationVariants.all { variant ->
        def apk = variant.packageApplication.outputFile;
        def newName = apk.name.replace(".apk", "-renamed.apk");
        variant.packageApplication.outputFile = new File(apk.parentFile, newName);
        if (variant.zipAlign) {
            variant.zipAlign.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
        }
    }
}

ブロックapplicationVariants.all {...}はブロックの外にありrelease {...}ます。

variant.zipAlign.outputFileは違いを生むと思います。

于 2013-09-05T13:17:45.740 に答える
-1

行の1つを削除して単純化しましたが、基本的には次のように変更する必要があります。

android {

    buildTypes {
    ...
    }

    applicationVariants.all { variant ->
        def file = variant.outputFile
        def fileName = file.name.replace(".apk", "-renamed".apk")
        variant.outputFile = new File(file.parent, fileName)
    }
}
于 2013-09-04T06:23:48.840 に答える