2010-05-16 41 views
7

Xin chào Tôi là nhà phát triển Android bắt đầu sử dụng windows và IDE nhật thực để phát triển ứng dụng android java. Tôi đã xuất bản một trò chơi nhưng có phiên bản miễn phí của trò chơi và phiên bản trả tiền . Thị trường google khẳng định rằng các phiên bản khác nhau phải có tên gói khác nhau. Cho đến nay tôi đã được refactoring gói với 2 tên khác nhau và thay đổi các tập tin tài nguyên R nhập khẩu mỗi khi tôi xây dựng các phiên bản khác nhau. Mã này là 99% giống nhau cho cả hai phiên bản. Có cách nào tốt hơn không?Android & Eclipse 2 phiên bản khác nhau của cùng một ứng dụng

Trả lời

2

Bạn có các cuộc thảo luận khác nhau về chủ đề này herethere, nhưng về cơ bản giải pháp là giống như sao chép dự án.

Ví dụ (không dựa trên eclipse):

Thật khó để trả lời câu này, vì chúng ta không biết những gì là sự khác biệt giữa các phiên bản miễn phí và không miễn phí của ứng dụng của bạn.

Tôi sẽ giả định rằng sự khác biệt có thể được xử lý bởi một số loại cờ miễn phí toàn cầu/không miễn phí. Bằng cách đó, tôi có nghĩa là cùng một mã sẽ tạo nên cả hai phiên bản của ứng dụng, và đó phần được kích hoạt hoặc sử dụng sẽ phụ thuộc vào một số công viên dữ liệu tĩnh ở đâu đó:

if (SomeClass.IS_PAID_APP) { 
     // add more stuff to menu, etc. 
} 

Nếu bạn có thể tổ chức ứng dụng của bạn theo cách đó, sau đó bạn chỉ cần một cơ sở mã.
Thiết lập để xây dựng ứng dụng của bạn một cách (miễn phí hoặc trả phí, lựa chọn của bạn) và với gói thích hợp trong tệp kê khai của bạn cho phiên bản ứng dụng đó.
Sau đó, thêm một nhiệm vụ Ant nào sau đây:

  1. Làm cho một bản sao cây dir dự án của bạn đến một vị trí tạm thời
  2. Chuyển các bản sao của tệp kê khai để tên gói mới qua Tìm kiếm- và-thay thế
  3. Chuyển tất cả các báo cáo nhập khẩu đối với phiên bản gói cũ của bạn của R để gói mới, một lần nữa thông qua tìm kiếm và thay thế, và một lần nữa vào sao chép, không bạn gốc
  4. thay đổi IS_PAID_APP của bạn (hoặc bất kỳ) với giá trị ngược lại (tìm kiếm và thay thế trong bản sao)
  5. Thực thi một xây dựng Ant cho các bản sao của các dự án
  6. Sao chép tập tin nhị phân từ đó xây dựng để bin dự án chính của/ thư mục dưới một cái tên khác nhau (vì vậy nó doesn' t clobber bản sao khác của bạn của aPK)
  7. Xóa các bản sao cây thực hiện trong bướC# 1

Nếu Java đã có một tiền xử lý, điều này sẽ phần nào đơn giản hơn. Tuy nhiên, kỹ thuật cơ bản mà tôi mô tả ở trên đã được sử dụng cho một vài thập kỷ nay. Nó rất khó, nhưng nó hoạt động, và nó có nghĩa là bạn chỉ có một bộ mã nguồn để xử lý. Lưu ý rằng tác vụ Ant <replace> sẽ xử lý nội dung tìm kiếm và thay thế của bạn một cách độc đáo.

1

Đây là một trong những thất bại của Android Market mặc dù tôi có thể thấy lý do tại sao họ đã làm theo cách đó.Nó chỉ không được thiết kế để có phiên bản miễn phí và trả tiền của ứng dụng của bạn (họ yêu cầu chính sách hoàn trả 24 giờ là những gì này cho, nhưng thay vào đó được sử dụng cho vi phạm bản quyền) -:

Anyways, điều đơn giản nhất cần làm là viết một kịch bản xây dựng Ant (hoặc bất kỳ ngôn ngữ kịch bản nào bạn sử dụng). Thực hiện tìm kiếm thay thế tên gói của bạn thông qua tất cả các tệp .xml và .java. Sau đó, hãy tạo ứng dụng của bạn ở đó. Refactoring mã của bạn là đau đớn hơn nó có giá trị IMHO ...

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