Nếu tôi hiểu vấn đề của bạn một cách chính xác, bạn muốn tạo ra nhiều ứng dụng Android tương tự như nhau (ví dụ, có rất nhiều mã nguồn giống nhau), nhưng đó là khác nhau đặc biệt (nhỏ) cách và bạn muốn mỗi ứng dụng này có một gói riêng biệt để có thể tải lên và phân phối riêng biệt trên một cửa hàng ứng dụng như Google Play. Thư viện dự án là một cơ sở tuyệt vời để hoàn thành các mục tiêu đó.
Tôi giả định rằng sự khác biệt giữa các phiên bản khác nhau, bao gồm những thứ như tài nguyên, tên ứng dụng và gói và nút chuyển bật một số tính năng nhất định cho phiên bản trả tiền. Ngay cả khi đó không phải là trường hợp, bằng cách sử dụng đa hình theo cách được mô tả dưới đây, các ứng dụng khác nhau của bạn có thể khác nhau theo những cách đáng kể và vẫn chia sẻ một Thư viện dự án chung.
Thư viện dự án có thể được định nghĩa trong Eclipse theo cách tương tự như bất kỳ dự án Android nào, nhưng được đánh dấu là Thư viện dự án (bằng cách chọn hộp "Thư viện" ở gần cuối trang Android của hộp thoại Thuộc tính dự án của thư viện) và không thể được biên soạn và tự chạy. Thay vào đó, nó được dự định để được bao gồm bởi tham chiếu trong một hoặc nhiều dự án khác là ứng dụng thực tế (bằng cách thêm tham chiếu đến nó trên trang Android của mỗi hộp thoại Thuộc tính dự án của ứng dụng). Các ứng dụng này sẽ sử dụng Thư viện dự án và do đó sẽ chia sẻ mã và khả năng của nó. Mỗi ứng dụng tham chiếu như vậy sẽ có tệp kê khai riêng (có thể khai báo các gói khác nhau của chúng), và chúng cũng có thể định nghĩa các lớp riêng của chúng (bao gồm các lớp bắt nguồn từ lớp Activity và/hoặc Application của Thư viện dự án).), để các lớp này có thể chuyên biệt đa hình cho mỗi ứng dụng sử dụng Thư viện dự án (ví dụ, bằng cách ghi đè phương thức hoặc bằng cách cung cấp định nghĩa cho các phương thức được định nghĩa là trừu tượng trong các lớp có nguồn gốc ứng dụng hoặc hoạt động của Thư viện dự án), mặc dù bạn cũng có thể sử dụng các lớp Thư viện đó mà không sửa đổi (miễn là chúng không trừu tượng) bằng cách tham chiếu chúng trong tệp kê khai (ví dụ: trong thẻ hoạt động hoặc ứng dụng) của từng ứng dụng sử dụng Thư viện, giống như bạn tham chiếu Hoạt động hoặc Ứng dụng các lớp đã được xác định trong chính ứng dụng.
Nếu bạn quyết định sử dụng phương pháp này, bạn sẽ đặt các tệp nguồn chính trong Thư viện dự án và tạo dự án riêng cho từng ứng dụng bạn muốn sản xuất, mỗi ứng dụng sẽ tham chiếu Thư viện dự án. Tệp kê khai của Thư viện dự án sẽ bị ghi đè bởi tệp kê khai của bất kỳ dự án nào đang được tạo bằng Thư viện đó (thực tế, tôi nghĩ rằng tệp kê khai của Thư viện dự án hoàn toàn bị bỏ qua, không chỉ ghi đè, nhưng dù sao cũng hữu ích khi tạo tệp kê khai cho Thư viện, để bạn có thể tạo mẫu - sao chép và chỉnh sửa theo cách thủ công - tệp kê khai của từng dự án sử dụng nó từ tệp kê khai riêng của Thư viện).
Tôi đã sử dụng cách tiếp cận này để tạo nhiều ứng dụng android có cùng một số tính năng giống nhau và nó đã hoạt động rất tốt đối với tôi.
Về đặt tên gói, bất kỳ tên gói cũ nào sẽ hoạt động cho dự án thư viện, nhưng tất nhiên là sử dụng cùng một tiền tố cho gói của Dự án thư viện khi bạn sử dụng cho các cá nhân khác nhau của bạn trả tiền) ứng dụng sử dụng nó, với một cái gì đó như ". Thư viện" như là phần cuối cùng của tên, trong khi các ứng dụng khác nhau có thể có kết thúc như ".myappfree" và ".myapppaid". Đương nhiên, bạn sẽ muốn sử dụng quy ước tên miền ngược của bạn cho tiền tố gói của thư viện để ngăn xung đột, giống như bạn làm cho tên gói của ứng dụng được phát hành.
Trong Windows, một thoải mái, mã nguồn mở công cụ để so sánh các căn cứ code đang WinMerge:
http://winmerge.org/
Nếu tôi ở vị trí của bạn, tuy nhiên, tôi sẽ chỉ sử dụng công cụ này để tự xác định sự khác biệt, và sẽ không cố gắng sử dụng nó để tự động hóa việc tái cấu trúc mã của bạn thành một Dự án Thư viện. Điều đó sẽ được thực hiện tốt nhất dưới sự kiểm soát của riêng bạn (thủ công).
Cuối cùng, thay vào đó, bạn có thể cân nhắc sử dụng một ứng dụng miễn phí và có khả năng của ứng dụng miễn phí theo mặc định, với tùy chọn nâng cấp lên khả năng của ứng dụng đầy đủ (được phân phối trong cùng một APK) thanh toán bằng ứng dụng, thay vì có các ứng dụng miễn phí và trả phí riêng biệt. Thanh toán trong ứng dụng đã được cải thiện rất nhiều trong vài tháng qua (với việc phát hành phiên bản 3 của IAB), và mặc dù vẫn còn một số trục trặc, chúng đã trở thành một sự thay thế thực tế hơn cho sự phân đôi miễn phí/đầy đủ hơn Đầu tiên.
Tuyệt!Nó thực sự là khá đau làm việc sáp nhập bằng cách sử dụng một công cụ dif thường xuyên. Chỉ những thứ tôi thực sự gặp phải là tôi đã mã hóa các tên gói và một vấn đề đã biết với không hoạt động trong các dự án thư viện; cả hai đều dễ dàng giải được. –
MrJre