2012-05-04 32 views
45

Tôi có một dự án Android với nhiều mục tiêu xây dựng (sử dụng kiến). Đối với mục đích thử nghiệm, những mục tiêu xây dựng này đều có tên gói khác nhau (vì vậy tên gói của tôi là com.mycompany.myapp cho bản phát hành và com.mycompany.myapp.test để xây dựng thử nghiệm).Khai báo không gian tên Xml: tên gói thay thế tự động

Điều này hoạt động tốt cho hầu hết các phần, ngoại trừ khi nói đến không gian tên xml tùy chỉnh trong tệp bố cục. Vì vậy, đây:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" /> 

sẽ ngừng làm việc càng sớm càng tên gói được thay thế bằng com.mycompany.myapp.test.
Do đó, tôi phải thay thế giá trị com.mycompany.myapp mỗi lần trong quá trình dựng sẵn. Và kể từ khi tất cả các file này phải ở trong vcs, và không nên xung đột mỗi khi một người chuyển cấu hình và họ sáp nhập, tôi đã phải di chuyển các file bố trí vào thư mục cấu hình cụ thể, nơi họ sẽ như thế nào:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/@[email protected]" /> 

Bây giờ này các tệp được lưu trữ trong vcs và @ CONFIG.PACKAGENAME @ được thay thế trong quá trình dựng sẵn và sau đó tệp được sao chép từ ./config/file.xml thành ./res/layout/file.xml.

Điều này cực kỳ bất tiện và không thực sự mở rộng (tôi không thể tưởng tượng được mỗi một trong số 50 tệp trong tập lệnh xây dựng).

Vì vậy, câu hỏi của tôi là: có cách nào để tự động sử dụng tên gói hiện tại trong khai báo không gian tên không? Hoặc ít nhất là các tệp bố cục modife (hoặc xây dựng tệp?) Để tôi không phải thay thế com.mycompany.myapp mỗi khi tôi thay đổi tên gói.

Trả lời

115

Chỉ ra rằng có một hậu tố cho điều đó: tự động tái cấu hình.

Vì vậy, tất cả các bạn cần làm là viết

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" /> 

này sẽ tự động sử dụng tên gói hiện hành.

+1

Tham chiếu: http://developer.android.com/tools/sdk/eclipse-adt.html (phần ADT 17.0.0). – Pang

+0

"Đã thêm hỗ trợ cho chế độ xem tùy chỉnh với các thuộc tính tùy chỉnh trong thư viện. Bố cục sử dụng thuộc tính tùy chỉnh phải sử dụng URI không gian tên http://schemas.android.com/apk/res-auto thay vì URI bao gồm tên gói ứng dụng. được thay thế bằng ứng dụng cụ thể tại thời điểm xây dựng. " – flup

+2

Nó có hoạt động ngay cả khi dự án của tôi sử dụng thư viện chứa các chế độ xem tùy chỉnh? –

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