Eingebettete Versionsdetails in android APK

Mein Code wird in der SVN-Versionskontrolle gespeichert. Ich benutze Eclipse, um meine Android-Anwendung zu bauen.

In meiner Bewerbung habe ich eine Out-Box. Ich möchte die richtige Quellcodeverwaltung Revision / Tag / was auch immer in diesem anzeigen.

  • Wie man ActionBar mit AppCompat v.7 ein- und ausblenden kann
  • Android CAB zerstört nach listview notifydatasetchanged
  • Gute Werkzeuge, um eine GUI in Android zu entwickeln?
  • Android: Howto Parse URL String mit Leerzeichen für URI-Objekt?
  • Optionsmenü Kein Text anzeigen
  • Android - Wie man Absicht von JavaScript ausführt
  • Gibt es eine Möglichkeit, dies zu automatisieren, so dass meine Version String in der about-box ist immer richtig, oder ist das etwas, was ich habe Hand-Edit jedes Mal, wenn ich begehen?

    Thx für die frühen Antworten über $ keywords $.

    Einstellen der SVN-Eigenschaft svn:keywords to Rev erweitert eine private String m_svn_rev = "$Rev:$" jedes Mal, wenn ich diese Datei einreichen.

    SVN ist ein per-file Versionskontrollsystem.

    Was führt stattdessen zu fragen, ob ich irgendwie vorab verarbeiten können einige Dateien in der Android-Build-Ding, um svnversion-Ausgabe zu injizieren?

  • Verwenden Sie Insert oder Replace in ContentProvider
  • Auto-Update einer Android App passiert nie
  • Android - Capture "Done" und "Enter" Tastenereignisse auf Softtastatur
  • Systemabsturz beim Überschreiben isInterceptRequest in WebViewClient
  • Android-Anwendung aktuelle Aktivität bringen vorne Ausgabe
  • Umwandlung in Dalvik-Format fehlgeschlagen mit Fehler 1 mit javax / net / SocketFactory.class
  • 4 Solutions collect form web for “Eingebettete Versionsdetails in android APK”

    Ein möglicher Ansatz. In Ihrem AndroidManifest.xml fügen Sie Metadaten zu Ihren Aktivitäten hinzu, um die Revision zu behalten oder was auch immer Sie verwenden möchten

     <activity android:name="SampleActivity"> <meta-data android:value="$Rev: 164 $" android:name="com.example.version" /> </activity> 

    Dann in deiner Aktivität

     try { final ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); final String version = (String)ai.metaData.get("com.example.version"); System.out.println("version: " + version); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

    Sie können auch android:versionName="$Rev$" in Ihrem Manifest setzen.

    Um den Prozess der Inkrementierung der Versionsnummer in android:versionCode und begehen der AndroidManifest.xml gibt es verschiedene Optionen, Gebäude mit maven oder ant könnte Alternativen sein, aber lassen Sie uns es mit Eclipse und ADT.

    Zuerst füge deinem Projekt einen Builder hinzu ( Mein Projekt -> Eigenschaften -> Builder )

    Alt-Text

    Dieser Builder sollte die android-increment-manifest-version mit dem AndroidManifest.xml des Projekts als Argument AndroidManifest.xml

    Alt-Text

    Android-Inkrement-Manifest-Version Skript ist so etwas wie

     #! /bin/bash # android-increment-manifest-version: # increment the version number found in the AndroidManifest.xml file # (android:versionCode="n") in place and commit it to subversion. # # Copyright (C) 2010 Diego Torres Milano - http://dtmilano.blogspot.com usage() { echo "usage: $PROGNAME AndroidManifest.xml" >&2 exit 1 } PROGNAME=$(basename $0) if [ "$#" -ne 1 ] then usage fi MANIFEST="$1" perl -npi -e 's/^(.*android:versionCode=")(\d+)(".*)$/"$1" . ($2+1) . "$3"/e;' $MANIFEST svn ci -m "Version incremented" $MANIFEST 

    Nur generische Ratschläge, erwähnen Sie nicht Ihr Versionskontrollsystem.

    Eingebettet den passenden Header (etwas wie $ Version: $) in den Text für die über Box. Wenn Sie begehen, wird die neue Version # gespeichert und wenn Sie den Wert erstellen, wird der Wert angezeigt.

    [bearbeiten]
    1. Erstellen Sie Ihre über Box als separate Quelle, nur überprüfen Sie es in, wenn Sie die Version zu erhöhen.
    2. eingebettet Ihre eigene Version in eine Header-Datei (und vergessen Sie nicht, es zu ändern) dann verwenden Sie diese Version String in Ihrem über Feld (als eine extern string * zum Beispiel)
    [/bearbeiten]

    Von der Idee von dtmilano.blogspot.com … aber mit nur der SVN-Revision:

     #! /bin/bash # The first argument is full path of AndroidManifest.xml file usage() { echo "usage: $PROGNAME AndroidManifest.xml" >&2 exit 1 } if [ "$#" -ne 1 ] then usage fi PROGNAME=$(basename $0) MANIFEST="$1" SVNREVISION=$(svn info | sed -n '5p' | sed -e 's/.*[^0-9]\([0-9]*\).*/\1/g') if [ -f $MANIFEST ]; then sed "s/android:versionCode=\"[0-9]*\"/android:versionCode=\"${SVNREVISION}\"/" $MANIFEST > $MANIFEST.tmp mv $FULLPATH.tmp $MANIFEST echo "The android:versionCode properties of file ${MANIFEST} is ${SVNREVISION}"; fi; #svn commit -m "Update version in $MANIFEST" $MANIFEST 

    Die Versionsnummer ändert sich nur, wenn sich die SVN Revision ändert, dh nur, wenn Sie svn commit ausführen.

    Wenn du willst, kannst du einen Scheck für geänderte Revision hinzufügen, wenn ja die Sed für die Datei ausführen. Ist auch möglich, die Revision auf die letzte SVN-Revision auf dem Server zu ändern.

    Dies kann eine Tangente sein, aber ich benutze Cruse Control $ Label-Tag, um die Version in meinem über Bildschirm zu stoßen. Jedes Mal, wenn ich etwas überprüfe, führt CC ein Update und spuckt einen Build aus. Einer der Schritte in meinem Ameisenskript injiziert den $ label Wert aus dem Cruise Control System in einen Wert in strings.xml. Dies gibt mir eine neue Versionsnummer mit jedem Commit. Ich kann die CC-Protokolle überprüfen und eine Build-Nummer bis zu einer SVN-Revisionsnummer abgleichen.

    Wahrscheinlich mehr Arbeit als du daran interessiert bist, für etwas so einfaches zu tun. Ich würde auch wetten, dass jedes andere Build-System da draußen ein ähnliches Feature haben wird.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.