2010-08-22 4 views
18

È possibile leggere a livello di programmazione la data in cui è stato creato il mio apk Android? Non ho trovato nulla nella classe PackageInfo.Come leggere a livello di programmazione la data in cui è stato creato il mio apk Android?

Desidero scadere le versioni beta della mia app e il modo più semplice sarebbe quello di leggere una data e scadenza dopo una correzione prefissata di giorni, quindi non devo aggiornare il codice per quella volta ogni volta costruire e distribuire una versione beta.

+0

Non vedo perché questa domanda è contrassegnata come duplicata. La domanda qui è stata fatta un anno prima rispetto all'altra, e anche la risposta è più vecchia di un anno. L'altra domanda è il dup. Basta dire. – fattire

risposta

27

E 'stato un po' che questo è stato chiesto, ma ecco come ho fatto con Android Studio w/Gradle ....

In build.gradle, ciascuna della vostra build types dovrebbe avere un buildConfigField. (Questa è una versione semplificata del configuration- è molto probabile di avere altre cose qui, ma ho voluto mostrare dove lo metti):

android { 
    signingConfigs { 
     buildTypes { 
      debug { 
       buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)" 
      } 
      release { 
       buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)" 
      } 
     } 
    } 
}  

(Si noti che "BuildConfigField" è il newer version di " . BuildConfigLine ", come del sistema 0.8.0 build)

la prossima volta Gradle non assembleRelease o assembleDebug, esso dovrebbe generare:

./build/source/buildConfig/releaseORdebug/com/your/project/BuildConfig.java

successivo, all'interno di quella BuildConfig file, si dovrebbe vedere qualcosa è stato generato automaticamente come:

public final class BuildConfig { 
    public static final java.util.Date buildTime = new java.util.Date(1395794838381L); 
} 

Quindi, per accedere alla data di realizzazione all'interno della vostra app ....

Date buildDate = BuildConfig.buildTime; 
Log.i("MyProgram", "This .apk was built on " + buildDate.toString()); 

(È possibile formattare la data tuttavia si come usare un SimpleDateFormat.)

Spero che questo sia utile.

+0

è possibile utilizzare System.currentTimeMillis() anziché la funzione ... –

+0

Hmm. Ho provato e non ho funzionato (errore: impossibile trovare la variabile symbol buildTime) comprimendo la funzione in 'Calendar.getInstance(). GetTimeInMillis();' funziona per me. – fattire

+0

Lo riprendo. Ho appena provato di nuovo e sembra funzionare ... rendendo build.gradle un po 'più piccolo. Aggiornerò la risposta .. Grazie, Marco! – fattire

Problemi correlati