2010-08-22 37 views
18

Có thể lập trình đọc ngày tháng khi gói ứng dụng Android của tôi được tạo không? Tôi không thể tìm thấy bất cứ điều gì trong lớp PackageInfo.Làm thế nào để lập trình đọc ngày khi apk Android của tôi được xây dựng?

Tôi muốn hết hạn phiên bản beta của ứng dụng và cách dễ nhất là đọc một ngày như vậy và hết hạn sau ngày sửa lỗi trong ngày, vì vậy tôi không phải cập nhật mã cho thời gian đó xây dựng và triển khai phiên bản beta.

+0

Tôi không thấy lý do tại sao câu hỏi này được đánh dấu là trùng lặp. Câu hỏi ở đây được hỏi sớm hơn một năm so với câu hỏi còn lại, và câu trả lời cũng lớn hơn một năm. Câu hỏi còn lại là dup. Chỉ cần nói. – fattire

Trả lời

27

Nó được một lúc kể từ này được yêu cầu, nhưng dưới đây là cách tôi đã làm nó sử dụng Android Studio w/gradle ....

Trong build.gradle, mỗi build types của bạn nên có một buildConfigField. (Đây là một phiên bản đơn giản của Configuration bạn có thể có những thứ khác ở đây, nhưng tôi muốn chứng tỏ nơi bạn đặt nó):

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

(Lưu ý rằng "BuildConfigField" là newer version của " . BuildConfigLine "như của hệ thống 0.8.0 build)

thời gian gradle tiếp theo không assembleRelease hoặc assembleDebug, nó sẽ tạo ra:

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

tiếp theo, bên trong đó 01.tập tin, bạn sẽ thấy một cái gì đó đã được tự động tạo ra như:

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

Vì vậy, để truy cập vào các ngày xây dựng trong phạm vi ứng dụng của bạn ....

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

(Bạn có thể định dạng ngày tuy nhiên bạn như sử dụng một số SimpleDateFormat.)

Hy vọng điều này hữu ích.

+0

bạn có thể sử dụng System.currentTimeMillis() thay vì chức năng ... –

+0

Hmm. Đã thử và không hoạt động (lỗi: không thể tìm thấy symbolTime variable buildTime) mặc dù nén hàm thành 'Calendar.getInstance(). GetTimeInMillis();' làm việc cho tôi. – fattire

+0

Tôi lấy lại. Tôi chỉ thử nó một lần nữa và nó có vẻ làm việc ... làm cho build.gradle một chút wee nhỏ hơn. Tôi sẽ cập nhật câu trả lời .. Cảm ơn, Marco! – fattire

Các vấn đề liên quan