2010-08-22 13 views
18

¿Es posible programar programáticamente la fecha de creación de mi apk de Android? No pude encontrar nada en la clase PackageInfo.¿Cómo leer programáticamente la fecha en que se creó mi apk de Android?

Quiero caducar las versiones beta de mi aplicación y la forma más fácil sería leer dicha fecha y caducar después de un preiodo de días de reparación, así que no tengo que actualizar el código para esa cada vez que construir e implementar una versión beta.

+0

No veo por qué esta pregunta está marcada como un duplicado. La pregunta aquí fue hecha un año antes que la otra, y la respuesta es un año más vieja también. La otra pregunta es el dup. Sólo digo'. – fattire

Respuesta

27

Ha sido un tiempo desde que este se le pidió, pero aquí está cómo lo hice usando Android Studio w/Gradle ....

En build.gradle, cada uno de su build types debe tener un buildConfigField. (Esta es una versión simplificada de la configuración del establecimiento es muy probable que tenga otras cosas aquí, pero quería mostrar dónde lo pones):

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

(Tenga en cuenta que "BuildConfigField" es el newer version de " . BuildConfigLine "como del sistema 0.8.0 build)

la próxima vez Gradle no assembleRelease o assembleDebug, debe generar:

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

a continuación, dentro de esa BuildConfig archivo, debería ver algo ha sido generada por automóviles como:

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

Así, para acceder a la fecha de creación dentro de su aplicación ....

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

(Puede dar formato a la fecha sin embargo, como usar un SimpleDateFormat.)

Espero que esto sea útil.

+0

puede usar System.currentTimeMillis() en lugar de la función ... –

+0

Hmm. Intenté eso y no funcionó (error: no puedo encontrar la variable de símbolo buildTime) aunque comprimir la función en 'Calendar.getInstance(). GetTimeInMillis();' funciona para mí. – fattire

+0

Lo llevo de vuelta. Lo intenté de nuevo y parece funcionar ... haciendo que build.gradle sea un poquito más pequeño. Actualizaré la respuesta ... ¡Gracias, Marco! – fattire

Cuestiones relacionadas