Android使用gradle生成unsigned apk

Que*_*ein 2 android unsigned gradle apk jenkins

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

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

事实上,当服务器构建的应用程序,它会产生一个-unsigned.apk但似乎这个APK 由签署developper证书.

事实上,我通过下载apk并运行以下命令检查了这一点(阅读后如何验证Android apk是否与发布证书签名?)

jarsigner -verify -verbose -certs app-unsigned.apk | grep Android
Run Code Online (Sandbox Code Playgroud)

所以输出就像

X.509, CN=Android Debug, O=Android, C=US
Run Code Online (Sandbox Code Playgroud)

(有很多行)

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

clean assemble lint
Run Code Online (Sandbox Code Playgroud)

之后,我通过运行来压缩所有的apks

zipalign -f -v 4 *.apk
Run Code Online (Sandbox Code Playgroud)

我的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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Que*_*ein 5

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

事实是我用于构建的任务.

我用了

clean assemble lint
Run Code Online (Sandbox Code Playgroud)

然后我改变了

clean assembleRelease lint
Run Code Online (Sandbox Code Playgroud)

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

jarsigner -verify -verbose -certs app-release-unsigned.apk | grep Android
Run Code Online (Sandbox Code Playgroud)

输出没什么,所以我猜它有用.

这是一个谜对我来说,因为我觉得assemble是一种快捷assembleDebug,然后assembleRelease 就像我的gradle上阅读,但似乎产生的APK具有相同的名称(应用程序释放-unsigned.apk),但其中一人签署,则别的没有.

无论如何,使用assembleRelease似乎工作.