2016-02-29 19 views
10

Tôi đang viết SDK và muốn nhà phát triển có thể tạo một activity-aliastargetActivity được đặt thành hoạt động bên trong SDK của tôi. Tôi đang làm điều này vì tôi muốn họ có thể tùy chỉnh bộ lọc ý định trên một hoạt động cụ thể trong SDK. Nếu trong manifest các sdk của có ActivityX, tôi muốn họ để có thể viết một activity-alias như thế này trong ứng dụng của họ biểu hiện:android: cho phép tạo bí danh hoạt động có targetActivity là aar/sdk

<activity-alias 
    android:name="abc" 
    android:targetActivity="ActivityX"> 
    <intent-filter> 
    ... user's custom intent filter 
    </intent-filter> 
</activity-alias> 

Vấn đề tôi đang đi ngang qua là targetActivityrestriction rằng nó:

"... phải phù hợp với thuộc tính tên của một phần tử hoạt động mà trước các bí danh trong manifest."

Đây là một vấn đề bởi vì không có vấn đề mà tôi đặt hoạt động trong biểu hiện của sdk hoặc nơi tôi đặt bí danh trong manifest một ứng dụng ví dụ của, bí danh luôn luôn đi kèm trước khi hoạt động trong biểu hiện sáp nhập chính thức gây ra một lỗi INSTALL_PARSE_FAILED_MANIFEST_MALFORMED .

Một ý tưởng là đặt bí danh mà không có bộ lọc ý định ngay sau khi ActivityX được khai báo trong tệp kê khai sdk và hy vọng rằng hai bí danh sẽ là merged together và ở vị trí bí danh sdk. Nhưng tôi không thể tìm ra cách để làm điều đó. Một lý do có thể không hoạt động là hai bí danh có thể không xung đột được.

Bạn có suy nghĩ về cách giải quyết vấn đề này thông qua giải pháp hợp nhất hoặc một số kỹ thuật khác không?

+1

Thư viện Android rất hạn chế trong các trường hợp góc như thế này. Tôi có thể thấy lý do tại sao bạn muốn làm điều đó. Tôi không có ý tưởng nhưng tôi sẽ đề nghị bạn đăng trong b.android.com như một yêu cầu tính năng cho nhóm công cụ –

Trả lời

3

Một giống hệt nhau issue được đưa lên trong AOSP. Một cách giải quyết cho vấn đề được mô tả ở đó như sau:

thủ bao gồm sự xâm nhập manifest cho Hoạt động từ [SDK] trong manifest của dự án ứng dụng, đặt nó trước sự xâm nhập hoạt động-alias.

Mặc dù thực tế rằng cách giải quyết này có vấn đề

... trùng lặp mã trên biểu hiện.

dường như các nhà bảo trì dự án coi giải pháp này là phù hợp. Không có dấu hiệu cho thấy một sửa chữa cho vấn đề cơ bản sẽ được phát hành bất cứ lúc nào sớm.

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