问题
I'm developing an Android SDK library. In this library I've declared and used some Activities. Now I've tried to include the library in an application but I've noticed that I must declare all the library activities in the app. This is a very bad thing because in the library, I've included a lot of activities and the developer has to copy all the activities in his own app. Is there a solutions to this?
回答1:
No, this is a known limitation of the libraries at the moment. There is a lot of discussion in the android development community of fixing this in the future, but for now it is a limitation of how they do libraries.
From the doc
In the manifest file of the application project, you must add declarations of all components that the application will use that are imported from a library project. For example, you must declare any
<activity>
,<service>
,<receiver>
,<provider>
, and so on, as well as<permission>
,<uses-library>
, and similar elements.
Also, excellent answer here by Mark Murphy.
回答2:
Update 1: When using Gradle, Manifest merging is done now automatically. More details on how it works and how to resolve conflicts can be found here (thanks for the remark guy.gc)
Original post:
To update this thread: auto merge is now possible. You would only have to add
manifestmerger.enabled=true
to your project.properties. Using the new "manifestmerger" property in Android discusses this also.
I know this is an old thread but I just stumbled upon it and want to prevent others (me included) from thinking it is not possible. This one line was totally enough in my projects to make use of Activities in the library-consuming App.
来源:https://stackoverflow.com/questions/5046864/android-library-project-and-activities