2010-08-22 13 views
18

Czy można programowo odczytać datę utworzenia mojego apk na Androida? Nie mogłem znaleźć niczego w klasie PackageInfo.Jak programowo odczytać datę utworzenia mojego apk na Androida?

Chcę wygasać wersje beta mojej aplikacji i najprostszym sposobem jest odczytanie takiej daty i wygaśnięcie jej po naprawie preiodu dni, więc nie muszę aktualizować kodu dla tego czasu. buduj i wdrażaj wersję beta.

+0

Nie rozumiem, dlaczego to pytanie jest oznaczone jako duplikat. Pytanie zadane zostało rok wcześniej niż poprzednie, a odpowiedź jest o rok starsza. Drugie pytanie to dup. Tylko mówię'. – fattire

Odpowiedz

27

Minęło trochę czasu odkąd ten został poproszony, ale oto jak zrobiłem to za pomocą Android Studio w/Gradle ....

W build.gradle, każdy z Twojego build types powinien mieć buildConfigField. (Jest to uproszczona wersja konfiguracja jesteś prawdopodobnie mają inne rzeczy tutaj, ale chciałem pokazać, gdzie można umieścić go):

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

(Zauważ, że „BuildConfigField” jest newer version z " . BuildConfigLine "jako systemu 0.8.0 build)

następnym razem Gradle ma assembleRelease lub assembleDebug, należy wygenerować:

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

Dalej, wewnątrz, które BuildConfig plik, powinieneś zobaczyć coś zostało automatycznie wygenerowane jak:

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

Tak więc, aby uzyskać dostęp do daty kompilacji w aplikacji ....

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

(można sformatować datę jakkolwiek jak przy użyciu SimpleDateFormat.)

Mam nadzieję, że to będzie pomocne.

+0

można użyć System.currentTimeMillis() zamiast funkcji ... –

+0

Hmm. Próbowałem tego i nie działałem (błąd: nie można znaleźć zmiennej symbolu buildTime), chociaż kompresowanie funkcji do 'Calendar.getInstance(). GetTimeInMillis();' działa dla mnie. – fattire

+0

Odzyskuję. Próbowałem go ponownie i wydaje się, że działa ... dzięki temu build.gradle jest trochę mniejszy. Zaktualizuję odpowiedź ... Dzięki, Marco! – fattire

Powiązane problemy