Firma di Studio di Gradle di Android con un file delle properties;

Sto cercando di firmare la mia applicazione con il file di build gradle. Quando utilizzo il firmingConfigs semplice funziona (signingConfigs.release)! Ma se sto cercando di leggere le properties; dal file properties; che non functionrà. (SigningConfigs.config)

Properties props = new Properties(); props.load(new FileInputStream(file(rootProject.file("signing.properties")))) android { signingConfigs { config { storeFile file(props["storeFile"]) storePassword props["storePassword"] keyAlias props["keyAlias"] keyPassword props["KeyPassword"] } release { storeFile file("..\\xyz.jks") storePassword "****" keyAlias "****" keyPassword "****" } } . . . buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' signingConfig signingConfigs.release } debug { applicationIdSuffix '.debug' versionNameSuffix '-SNAPSHOT' } } 

File di properties;:

  • Trova tutte le viste con il tag?
  • La cartella delle risorse di Android Library non viene copiata
  • android listview altezza dell'articolo
  • Come posso generare un apk che può funzionare senza server con reattivo nativo?
  • ClassNotFoundException: Non hai trovato la class "android.os.PersistableBundle" Otto Android 5.0
  • Usa l'URL su Android lancia IOException: indirizzo ipv6 malformato
  •  storeFile=xyz.jks storePassword=xyz keyAlias=xyz keyPassword=xyz 

    Quando eseguo il progetto, gli studi di android mostrano una window di dialogo che dice:

    xyz.apk non è firmato. Configurare le informazioni di firma per il sapore selezionato utilizzando la window di dialogo Struttura progetto.

    Il file di properties; viene letto correttamente perché posso registrare alcune properties; dal file gettare la console.

    Alcuni dei miei dettagli del sistema:

    Android Studio 0.8.6 Windows 8.1 x64 gradle 1.12

    Spero che chiunque possa aiutarmi. Se vuoi saperne di più, quindi chiedimi.

  • I valori di text vengono modificati in visualizzazione personalizzata quando si scorge la visualizzazione di liste in android?
  • Creare un sovrapposizione di sistema where i pulsanti di casa continuano a funzionare?
  • Imansible compilare il progetto in studio di android
  • Android Volley: Statico vs Oggetto
  • Cambiare l'orientamento in fase di runtime
  • File di espansione Android
  • 4 Solutions collect form web for “Firma di Studio di Gradle di Android con un file delle properties;”

    Questo è quello che faccio e funziona per me:

     signingConfigs { release { def Properties localProps = new Properties() localProps.load(new FileInputStream(file('../local.properties'))) def Properties keyProps = new Properties() assert localProps['keystore.props.file']; keyProps.load(new FileInputStream(file(localProps['keystore.props.file']))) storeFile file(keyProps["store"]) keyAlias keyProps["alias"] storePassword keyProps["storePass"] keyPassword keyProps["pass"] } } 

    Il mio file local.properties contiene un path di un file "keystore.properties". Questo contiene le mie informazioni sul keystore:

     store=*** alias=*** pass=*** storePass=*** 

    Forse il caricamento di due file Propreties è ridondante, ma funziona per me.

    Ho trovato l'errore !!! Il problema era sensibile alle maiuscole! Scrivo io

    keyPassword props ["KeyPassword"]

    ma il file contiene solo

    keyPassword

    Perché non mi dica la gradella?

    Ecco un passo passo completo che ho preso per utilizzare un file delle properties; per spostare entrambe le mie chiavi dal file gradle.build in un file che non verrà incluso in qualsiasi build o repository commette.

    1) Crea un gradle.properties (se non ne hai ancora uno).

    La posizione di questo file dipende dal tuo sistema operativo:

      /home/<username>/.gradle/ (Linux) /Users/<username>/.gradle/ (Mac) C:\Users\<username>\.gradle (Windows) 

    2) Aggiungere una voce che punta al file yourprojectname.properties . (esempio per Windows)

     yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties 

    3) Creare il file yourprojectname.properties nella posizione specificata al passaggio 2 con le seguenti informazioni:

     keystore=C:\\path\\to\\keystore\\yourapps.keystore keystore.password=your_secret_password 

    4) Modificare il file gradle.build per indicare il file yourprojectname.properties per utilizzare le variables.

     if(project.hasProperty("yourprojectname.properties") && new File(project.property("yourprojectname.properties")).exists()) { Properties props = new Properties() props.load(new FileInputStream(file(project.property("yourprojectname.properties")))) android { signingConfigs { release { keyAlias 'release' keyPassword props['keystore.password'] storeFile file(props['keystore']) storePassword props['keystore.password'] } debug { keyAlias 'debug' keyPassword props['keystore.password'] storeFile file(props['keystore']) storePassword props['keystore.password'] } } compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { applicationId "your.project.app" minSdkVersion 16 targetSdkVersion 17 } buildTypes { release { } } } } dependencies { ... } 

    5) Godetevi! Ora tutte le chiavi saranno fuori dalla directory principale e tuttavia avete ancora le gioie dell'automazione per each build.

    Se si verifica un errore nel file gradle.build relativo alla variabile "props" è perché non si esegue il block "android {}" nella prima condizione se la variabile dei props viene assegnata in modo da spostare l'integer android {. ..} nella condizione in cui è assegnata la variabile dei puntelli e riprova.

    Ho scritto questi passaggi insieme dalle informazioni qui e qui trovate.

    Un'alternativa alle variables di giocoleria è quella di includere / applicare un file gradle contenente le configurazioni di firma.

    Così nel tuo build.gradle

     android { // the part to include if (project.hasProperty("yourproject.signing") && new File(project.property("yourproject.signing")).exists()) { println 'apply yourproject signing property'; apply from: project.property("yourproject.signing"); } else { println 'no yourproject signing property'; } // the rest of the usual stuff compileSdkVersion etc. 

    Nella tua directory .gradle (dipende dal tuo OS in cui si trova) aggiungere un file gradle.properties o, se esiste, aggiungere la seguente row

     yourproject.signing=*the full path to your magic file*signing.gradle 

    Nel file indicato dalla voce di cui sopra si includono i configs di firma come si farebbe nel file build.gradle

     android { signingConfigs { release { keyAlias '*your release key alias*' keyPassword '*your key password*' storeFile file('*the full path to your keystore file*.jks') storePassword '*your keystore password*' } } } 

    Sì, l'involucro android extra deve essere lì. Il vantaggio è che quello sopra è un file di gradle regolare, in modo da poter fare tutta la magia che vuoi dentro.

    Aggiungere altri firmeConfig secondo le necessità, usa il solito modo, ad esempio

     signingConfig signingConfigs.release 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.