2013-03-12 108 views
0

我在Linux上使用Eclipse for Android SDK,並搜索將編譯的日期和開始時間添加到其中一個xml文件的方法。我喜歡在設備上看到我使用的版本,而無需在每次手動編譯步驟之前更新此信息。Eclipse時間戳編譯時間Android

到目前爲止,通過搜索網絡,我只發現像「使用螞蟻」的提示。

我想我必須使用/ proc/driver/rtc這是一個由Linux內核提供的動態「文件」,其中包含實時更新的行,以冒號分隔的文本命名爲例如「rtc_date」和「rtc_time」。包括它並使用設備上的應用程序來獲取提取的信息。

有沒有更好的方法?就像通過知道時間或者從proc中刪除信息並將它在編譯時置於xml文件中一樣進行日食?

它是我第一次使用eclipse,所以請原諒,如果我問了一些明顯或不可能的東西。

問候 CT

回答

0

我使用這個代碼來獲取應用程序的構建時間。我知道這不是輸出到XML,但如果你試圖獲得應用程序的構建時,這應該工作。

private long getAppBuildTime() { 
    if(cachedAppBuildTime == null) { 
     try{ 
      ApplicationInfo ai = appContext.getPackageManager().getApplicationInfo(appContext.getPackageName(), 0); 
      ZipFile zf = new ZipFile(ai.sourceDir); 
      ZipEntry ze = zf.getEntry("classes.dex"); 
      cachedAppBuildTime = ze.getTime(); 
      log("app build time " + cachedAppBuildTime); 
     }catch(Throwable t){ 
      return 1; 
     } 
    } 
    return cachedAppBuildTime; 
} 

該代碼中的可變appContext經由context.getApplicationContext()

+0

非常感謝!我修改了一下,完全像我希望的那樣工作。 – user2159904 2013-03-12 10:14:26

0

I獲得使用相同的策略yigit除我更喜歡MANIFEST.MF文件。 即使修改了佈局(對於classes.dex,情況並非如此),也會重新生成此類佈局。

這導致下面的代碼:

private long mAppBuildTime = -1; 

public long getAppBuildTime() { 
    if (mAppBuildTime == -1) { 
    try{ 
     ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), 0); 
     ZipFile zf = new ZipFile(ai.sourceDir); 
     ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF"); 
     mAppBuildTime = ze.getTime(); 
     zf.close(); 
    }catch(Exception e){ 
    } 
    } 
    return mAppBuildTime; 
}