Câu hỏi này có thể chủ quan, nhưng tôi cho rằng Stackoverflow vẫn là nơi tốt nhất để hỏi:Xây dựng quản lý cấu hình trong Android/Intellij/Jenkins
Miền vấn đề là "lập trình Android nâng cao". Tôi không cần thông tin về cách thiết lập một dự án Android đơn lẻ, cách sử dụng các dự án thư viện hoặc cách sử dụng ANT để xây dựng một dự án bình thường.
Giả sử bạn có một ứng dụng đang chạy, một dự án Android thông thường (IDE của sự lựa chọn là IntelliJ, nhưng điều đó không thực sự quan trọng) được xây dựng bởi Jenkins/Ant/Proguard. Kết quả của bản dựng này là APK cuối cùng bạn sẽ đặt trong cửa hàng Play.
Bây giờ hãy tưởng tượng bạn cần ứng dụng này dưới dạng phiên bản miễn phí và trả phí. Không có vấn đề gì cho đến nay, chỉ cần đặt tất cả mã được chia sẻ vào một dự án thư viện và tạo hai dự án con, một dự án có kiểm tra giấy phép bật App.java, ví dụ khác, ví dụ: hạn chế việc sử dụng.
Bây giờ hãy tưởng tượng bạn muốn nhắm mục tiêu Amazon, có thể có phiên bản thông cáo báo chí, v.v. Vì vậy, mã của bạn bắt đầu phân kỳ, vẫn còn nhiều thứ được chia sẻ, nhưng một số phần cụ thể cho ví dụ. thị trường bạn nhắm mục tiêu.
Trong C# có "câu lệnh biên dịch có điều kiện", như "IF PLAY_STORE ...". Có điều gì tương tự cho Java/Android không. Ngoài ra, họ có chơi tốt với ANT và quá trình xây dựng không.
Nhưng tôi không giới hạn trong việc biên dịch có điều kiện. Phương pháp "một dự án trên mỗi thị trường" là một phương pháp khác. Tôi chỉ cố gắng để có được một cảm giác về cách bạn quản lý các "cấu hình xây dựng" khác nhau theo cách bền vững. Có nghĩa là nó hoạt động cho 15 dự án, nhắm mục tiêu 3 thị trường trong 2 hương vị (MIỄN PHÍ và TRẢ TIỀN). Tôi hy vọng bạn thấy những gì tôi đang ám chỉ. Mã này rất giống với tất cả các ứng dụng, nhưng với ví dụ ở trên, tôi sẽ có 90 APK khác nhau - với những con số này, "bình luận thủ công trong mã nguồn chỉ cần bởi bản dựng này, v.v." không cắt nó nữa. Vì vậy, mọi mẹo, công cụ, từ tìm kiếm, trải nghiệm với miền có vấn đề này (ví dụ: MAVEN, nó có giúp ích gì cho tôi hay không, hoặc là ANT + scripts tạo tệp build.xml tốt hơn). Một ví dụ khác, nếu tôi có một dự án Android "thực" cho tất cả các thị trường mục tiêu, điều này sẽ cho phép tôi làm hầu hết mọi thứ. Nhưng tất nhiên, mặt khác, nếu tôi thêm một trang mới ở mức thấp nhất (ví dụ như một trang chi nhánh nhà xuất bản), tôi sẽ cần phải đi vào 90 Manifest.xml để thêm trang ...
Cảm ơn bạn đã trợ giúp này, Chris
PS: tôi sẽ bổ sung thêm một số liên kết tôi tìm thấy liên quan đến chủ đề này tại phía dưới, nếu ai đi qua câu hỏi này trong khi không có câu trả lời, điều này có thể là một "đầu tiên đọc" phần
http://www.asyncdev.net/2011/02/android-dev-prod-builds/
http://www.slf4j.org/ (liên quan đến "đặt JAR trong t o cung cấp IMPL "cách"
(SLF4J chỉ là một cách tiếp cận tốt đẹp để giảm phụ thuộc và cung cấp cấu hình trong quá trình triển khai - chỉ cần thêm một JAR khác. Để sử dụng một cái gì đó như thế này có thể là quá mức cần thiết cho các dự án của riêng bạn, nhưng nó sẽ là một cách. Ví dụ. cho giao diện ghi giấy phép và một chút mã như SLF4J, sau đó cung cấp hoặc PressRelease.jar hoặc Productive.jar trong thư mục Lib trong khi xây dựng, thay đổi cách ứng dụng hoạt động ...)
Bạn có tìm thấy giải pháp cho việc này không? Tôi cũng đang cố gắng tìm ra cách tốt nhất để đạt được điều này. Cảm ơn – LocoMike
Không, vẫn cố gắng hết sức. Nhiều khả năng tôi sẽ kết thúc bằng ví dụ: một sự kết hợp của StaticLoggerBinder -> JAR -> Replace_On_Build -> ConfigureByStaticBool (nhưng thay vì loại Logger của BoolService).Bạn cần phải đi vào slf4j để hiểu câu :-) –
Vì vậy, xây dựng lại (immitate) slf4j cung cấp bools thay vì logger –