Android генерира неподписан apk с помощта на gradle

Имам проект за Android (с Android Studio и Gradle) и Jenkins CI Server, които изграждат този.

Това, което се опитвам да направя, е да генерирам напълно неподписан сертификат.

Всъщност, когато сървърът създава приложението, той генерира -unsigned.apk, но изглежда, че този apk е подписан от < em>сертификат за разработчици.

Всъщност проверих това, като изтеглих apk и изпълних следната команда (след като прочетох Как да проверя дали apk за Android е подписан със сертификат за издаване?)

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

Така че изходът е като

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

(с много редове)

Колкото и да си струва, създавам приложението, изпълняващо задачите на gradle:

clean assemble lint

И след това ципах всички apk файлове, като стартирах

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
    }
}

Какво мога да опитам след това?


person Quentin Klein    schedule 12.05.2014    source източник
comment
След известно четене изглежда, че трябва да изградя в режим на освобождаване, за да получа неподписан apk, който трябва да подпиша сам? Android dev If you build your application unsigned, then you will need to manually sign and align the package. Ще го пробвам.   -  person Quentin Klein    schedule 12.05.2014


Отговори (1)


Добре, успях да получа резултата.

Фактът беше в задачата, която използвах за моето изграждане.

използвах

clean assemble lint

И тогава смених са

clean assembleRelease lint

Генерираният apk сега е app-release-unsigned.apk, но когато изпълня командата

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

резултатът е нищо, така че предполагам, че работи.

Това е загадка за мен, защото мислех, че assemble е вид пряк път за assembleDebug и след това assembleRelease както прочетох на gradle, но изглежда, че генерираният apk има същото име (app-release-unsigned.apk), но единият от тях е подписан, а другият не.

Както и да е, използването на assembleRelease изглежда работи.

person Quentin Klein    schedule 12.05.2014