* Moved protobuf to separate module to avoid having to wire KSP's Plugin with the Protobuf Plugin.
* `@Binds` function cannot be an extension function.
* Commented `kotlin.compiler.execution.strategy=in-process` in CI to circumvent OOMs due to increased metaspace usage.
And move Firebase Messaging dependency to the appropriate configuration.
Relates to #360
```
nowinandroid/app/src/main/AndroidManifest.xml Warning:
meta-data#com.google.samples.apps.nowinandroid.sync.initializers.SyncInitializer was tagged at AndroidManifest.xml:0 to remove other declarations but no other declaration present
```
Implement search feature
- Add a feature module named "search"
- Add a SearchScreen that is navigated by tapping the search icon at the top left corner
- Add a data layer that takes care of populating the *Fts tables and querying them by a search query
- Add a SearchViewModel that wires up the data layer of the Fts tables with the SearchScreen
The SearchScreen has following features:
- The user is able to type the search query in the TextField
- The search result is displayed as the user types
- When the search result is clicked, it navigates to:
- The InterestsScreen when a topic is clicked
- Chrome custom tab with the URL of the clicked news resource
- When the search result is clicked or the IME is explicitly closed by the user, the current search query in the TextField is saved as recent searches
- Latest recent searches are displayed in the SearchScreen
> `Transformations` is now written in Kotlin. This is a *source incompatible change* for those classes written in Kotlin that were directly using syntax such as `Transformations.map`
> Kotlin code *must* now use the Kotlin extension method syntax that was previously only available when using `lifecycle-livedata-ktx`.
> The `collectAsStateWithLifecycle()` APIs of `lifecycle-runtime-compose` are no longer in experimental status. (I09d42, b/258835424)
Changelog: https://developer.android.com/jetpack/androidx/releases/lifecycle#2.6.0-alpha05
* Move Hilt setup to convention plugin
* Disable Hilt on modules where it's not needed
* Enable non-transitive R classes
* Fix `configuration` blocks called in wrong scope
* Move imperative Flavors code from build.gradle
* Disable unnecessary build features globally
* Disable configure-on-demand as it's not encouraged
* Don't use internal AGP packages in plugins
Change-Id: I1bee3e3fd0103054637b979a350f9fd2312ae8ba
* Uses Androidx startup auto initialization for sync
* Runs sync on app startup every time
* Indexes keys on cross reference entities
Change-Id: I4a1d948f997269a6dc4fdf78ccb14c94b789f93c