2012-12-12 71 views
1

我已經能夠在遊戲開始之前通過腳本文件自動更改我的versionCode作爲androidmanifest.xml中的內部版本號用於當前的git commit number 。但由於某種原因,我不想使用versionCode作爲我的遊戲內部版本號。我想使用除versionCode和VersionName之外的其他東西,我可以在遊戲開始之前通過腳本保存我的git commit number,之後在遊戲中我可以讀取該值並顯示在我的遊戲中。所以我需要兩樣東西使用腳本更新android應用版本和內部版本號而不改變androidManifest VersionCode和VersionName

  1. 如何創建androidManifest文件額外的標籤在那裏我可以保存這個值
  2. 和文字更改標籤值在腳本文件的遊戲運行之前使用

我用下面的腳本來更改艙單

newverfull=$(git --git-dir="../../.git" --work-tree="../../" rev-list master | wc -l) 

manf=AndroidManifest.xml 

newvers=`echo $newverfull | sed 's/[^0-9].*$//'` 

vers=`sed -n '/versionCode=/s/.*"\([0-9][0-9]*\)".*/\1/p' $manf` 

sed /versionCode=/s/'"'$vers'"'/'"'$newvers'"'/ $manf >new$manf && cp new$manf $manf && rm -f new$manf 

的versionCode標籤我感謝你的幫助。謝謝!

+0

對於該腳本,您使用的是哪個操作系統?你在建什麼? ANT,Maven?其他? – Simon

+0

我用android 4.0.3構建而不使用任何ANT,Maven。剛剛寫了一個簡單的.sh腳本文件,並在我的遊戲啓動之前運行它,以更改清單標記中的清單和riodCode標記,我不想更改清單標記。 –

回答

0

我設法改變我之前發佈的腳本。我還在清單文件中創建元數據,並通過下面的腳本更改其值。感謝您的幫助乾杯! 這裏是變化

newverfull = $(git --git-dir =「../../。git」--work-tree =「../../」rev-list master | wc -1)

MANF = AndroidManifest.xml中

verbase = echo $newverfull | sed 's/\(.*\.\)\([0-9][0-9]*\).*$/\1/'

vername = sed -n '/GameVersion/s/.*"\([^"]*\)".*/\1/p' $manf

SED/GameVersion/S/' 「 '$ vername'」'/ '「' $ verbase '''/ $ manf> new $ manf & & cp new $ manf $ manf & & rm -f new $ manf

+0

使用「sed -i」替換文件中沒有這樣的副本,像這樣:'sed -i/GameVersion/s /''''$ vername'''''''$ verbase'''/ $ manf' – Cougar

0

下面是一個例子。自定義標籤是GameVersion。

<application android:name=".MyApplication" 
      android:icon="@drawable/icon" 
      android:label="@string/app_name"> 

    <meta-data android:name="GameVersion" android:value="1.9" /> 

    <activity android:name="com.someone.something.MainActivity" 
       android:theme="@android:style/Theme.Translucent.NoTitleBar" 
       android:screenOrientation="sensor" 
       android:label="@string/app_name"> 

要訪問:

ApplicationInfo ai = _context.getPackageManager().getApplicationInfo(_context.getPackageName(),PackageManager.GET_META_DATA); 
    ai.metaData.get("GameVersion") 

正如你所看到的,你需要上下文才能到PackageManager參考。我更喜歡使用getApplicationContext()來做到這一點,但如果這是您獲取數據的地方,則使用您的活動上下文很好。

+0

它具有元數據的好處,但我如何訪問.sh腳本文件中的這個元數據字段並更改其值。 –

+0

爲什麼你不能只改變你已有的腳本?您可能還想考慮更改爲ANT或其他一些自動執行此類操作的構建工具。 http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html。至於.sh,對不起,我不做Linux。 – Simon

+0

嘿夥計,感謝您的幫助 –