Android使用gradle生成unsigned apk

时间:2014-05-12 15:41:42

标签: android jenkins gradle apk unsigned

我有一个Android项目(使用Android Studio和Gradle)和一个构建此项目的 Jenkins CI服务器

我要做的是生成完全未签名的证书

事实上,当服务器构建应用程序时,它会生成 -unsigned.apk ,但似乎此 apk 已签名通过开发者证书

事实上我通过下载apk并运行以下命令(阅读How do I verify that an Android apk is signed with a release certificate?之后)检查了这一点

jarsigner -verify -verbose -certs app-unsigned.apk | grep Android

所以输出就像

X.509, CN=Android Debug, O=Android, C=US

(有很多行)

为了它的价值,我构建了运行gradle任务的应用程序:

clean assemble lint

之后,我通过运行

来压缩所有apks
zipalign -f -v 4 *.apk

我的 build.gradle 不包含任何签名选项

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
    }

    buildTypes {
        debug {
            // proguard
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            // ZipAlign
            zipAlign false
        }

        release {
            // proguard
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            // ZipAlign
            zipAlign true
        }
    }

    productFlavors {
        defaultFlavor {
        proguardFile 'proguard-rules.txt'
        }
    }

    lintOptions {
        // Don't abort if Lint finds an error, otherwise the Jenkins build
        // will be marked as failed, and Jenkins won't analyse the Lint output
        abortOnError false
    }
}

如果有人有想法生成一个完整的未签名的apk它会帮助我很多。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:5)

好的,我设法得到了结果。

事实是我正在为我的构建使用的任务。

我用过

clean assemble lint

然后我改为

clean assembleRelease lint

生成的apk现在是 app-release-unsigned.apk 但是当我运行命令时

jarsigner -verify -verbose -certs app-release-unsigned.apk | grep Android

输出 nothing 所以我猜它有效。

这对我来说是一个谜,因为我认为assembleassembleDebug的一种快捷方式,然后是assembleRelease like I read on gradle但似乎apk生成的具有相同的名称(app-release-unsigned.apk),但其中一个是签名的,另一个没有。

无论如何,使用assembleRelease似乎有效。