Utilizzando Ant, sto cercando di creare un'applicazione Android in modalità di rilascio per la distribuzione. Il mio problema è al processo di firma. Ho creato un keystore e un alias tramite Eclipse utilizzando la procedura guidata Esporta applicazione Android e l'app è firmata correttamente se esportata tramite Eclipse. Quando provo a completare lo stesso processo tramite Ant riferisco mia keystore e alias nel mio file build.properties:Registrazione tramite Android con Ant
key.store=C:\\Users\\a512091\\.android\\release.keystore
key.alias=application
key.store.password=android
key.alias.password=android
Il processo di creazione è successo e ho un file di Application-release.apk. Ho bloccato questo APK con jarsigner e tutti i file hanno tag "sm". Questa è la coda di uscita:
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
Quando provo ad installare questo APK in un emulatore o un dispositivo ottengo il seguente:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Logcat mostra problemi di firma sul mio file CSS e risorse di immagini :
11-07 11:06:20.060: WARN/PackageParser(58): Exception reading assets/www/css/base.css in /data/app/vmdl48898.tmp
11-07 11:06:20.060: WARN/PackageParser(58): java.lang.SecurityException: META-INF/XXXXX.SF has invalid digest for assets/www/res/droidhdpi/favorite_off.png in /data/app/vmdl48898.tmp
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:369)
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:272)
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarFile.getInputStream(JarFile.java:392)
11-07 11:06:20.060: WARN/PackageParser(58): at android.content.pm.PackageParser.loadCertificates(PackageParser.java:337)
11-07 11:06:20.060: WARN/PackageParser(58): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:508)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5885)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:134)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4743)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Handler.handleCallback(Handler.java:587)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Looper.loop(Looper.java:123)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.HandlerThread.run(HandlerThread.java:60)
11-07 11:06:20.069: ERROR/PackageParser(58): Package com.xxxxx.xxxxx has no certificates at entry assets/www/css/base.css; ignoring!
Come deve essere preso in considerazione l'attributo 'verbose'? Ora il flag verbose è sempre impostato. –
"verbose" deve solo sostituire facilmente la destinazione "signjar" originale. – FeelGood
Puoi fornire ulteriori informazioni per la tua soluzione 1.8.3+. Quali sono queste variabili? Da dove ottengo i loro valori? – Guy