2011-02-08 22 views
9

Tôi có ứng dụng được tải lên Repo Subversion/SVN. Có thể sử dụng tập lệnh bằng cách nào đó thay đổi mã phiên bản ứng dụng được lưu trữ trong AndroidManifest không? Tôi có nghĩa là trong/sau khi thanh toán/cập nhật?Làm cách nào để tự động tăng mã phiên bản trong AndroidManifest?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="mypackage" 
      android:versionCode="100000" 
      android:versionName="1.0"> 

Trả lời

4

SVN có keyword substitution mà bạn có thể sử dụng để đặt số sửa đổi vào tệp. Tuy nhiên, điều này sẽ dẫn đến việc sửa đổi khi bản thân tệp kê khai được thay đổi lần cuối, đó không phải là những gì bạn muốn.

Cách tốt nhất để đạt được những gì bạn muốn là gọi svnversion từ tập lệnh xây dựng của bạn và nhúng đầu ra vào tệp kê khai từ đó. Bạn có thể có tệp manifest.template trong điều khiển phiên bản có thể được tập lệnh tạo của bạn sử dụng để tạo tệp kê khai thực. Đặt một từ giữ chỗ trong mẫu và thay thế nó bằng số sửa đổi thu được với svnversion.

chỉnh sửa: trong Eclipse, bạn có thể là use an Ant script, and invoke it before the normal build. Ví dụ được liên kết tạo ra một tệp lớp với số sửa đổi, nhưng bạn cũng có thể tạo một tệp kê khai theo cách rất giống nhau.

+0

Bất kỳ ý tưởng về cách người ta sẽ làm điều này nếu họ đang sử dụng Eclipse? – Felix

+0

Tôi cũng rất vui khi biết cách sử dụng Intellij IDEA – barmaley

+0

@barmaley: IDEA có hỗ trợ tương tự để thực thi các tập lệnh kiến, xem [Tích hợp Intellij và Maven] (http: //www.jetbrains.com/idea/features/ant_maven.html) –

0

Bạn có thể làm điều đó tại thời gian xây dựng bằng cách sử dụng đích xpath Ant được cung cấp bởi tập lệnh xây dựng Android mặc định để lấy giá trị hiện tại, sau đó sử dụng Ant thay thế.

+0

Vui lòng cho tôi một số liên kết – barmaley

4

Tôi đã thực hiện việc này bằng cách thêm mục tiêu xây dựng bổ sung - vì vậy mã phiên bản được tăng lên khi bạn tạo dự án, chứ không phải khi bạn cam kết với SVN. Đây là những hướng dẫn để làm việc này trong IntelliJ IDEA.

Đầu tiên, thêm một file mới trong thư mục gốc của dự án của bạn được gọi là svn-revision.build.xml với các nội dung sau:

<project default="svn-revision"> 
    <target name="svn-revision"> 
     <exec executable="sh" outputproperty="revision"> 
      <arg value="-c" /> 
      <arg value="svnversion | sed -e 's/^[^:]*://;s/[A-Za-z]//'" /> 
     </exec> 
     <echo>Revision (app): ${revision}</echo> 
     <replaceregexp file="AndroidManifest.xml" match='android:versionCode="([^".]+)(\.[^"]*)?"' replace='android:versionCode="${revision}"' /> 
    </target> 
</project> 

Sau đó, trong menu đi đến View > Tools > Ant Build, sau đó nhấn + nút nhỏ trong cửa sổ và thêm tệp mới được tạo. Nhấp vào nút 'run' màu xanh lá cây trong cửa sổ Ant Build sẽ chạy tập lệnh ngay lập tức. Để làm cho kịch bản chạy mỗi khi bạn xây dựng, bạn sẽ cần phải đặt mục tiêu 'svn-revision' làm mục tiêu mặc định.

0

Phương pháp tiếp cận SVN là tốt, nhưng không nhất thiết phải phù hợp với mọi người. Tôi thích có kiểm soát trên ứng dụng tên phiên bản và mã phiên tăng vì vậy tôi đã tự Java ứng dụng đơn giản của tôi để làm điều đó

Các tính năng:

  • tên phiên bản được coi là major.minor.point (theo khuyến cáo của Android doc)
  • versionName có thể được giữ nguyên, đặt lại thành 1.0.0 hoặc tăng dần (một phần duy nhất của nó và (các) phần sau được đặt thành 0)
  • versionCode sẽ được thay thế bằng Giờ Unix

sẵn ở đây: android manifest build number

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