[英]How to store maps api key in local.properties and use it in AndroidManifest.xml
I am using Jetpack Compose and trying to integrate Google maps in my application.我正在使用 Jetpack Compose 并尝试将 Google 地图集成到我的应用程序中。 I have followed the documentation in setting up an API key .我已按照文档设置API 密钥。 However, I am getting an error when building the project.但是,在构建项目时出现错误。 On my local.properties
file I have the following code:在我的local.properties
文件中,我有以下代码:
MAPS_API_KEY=my_api_key
And on my AndroidManifest.xml
I have the following code:在我的AndroidManifest.xml
我有以下代码:
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GuideMeTravelersApp">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${MAPS_API_KEY}" />
<activity
android:name=".homescreen.HomeScreen"
android:exported="true"
android:label="@string/title_activity_home_screen"
android:theme="@style/Theme.GuideMeTravelersApp.NoActionBar" />
<activity
android:name=".registerview.RegisterView"
android:exported="true"
android:label="@string/title_activity_register_view"
android:theme="@style/Theme.GuideMeTravelersApp.NoActionBar" />
<activity
android:name=".ExperienceDetailsView.ExperienceDetailsActivity"
android:exported="true"
android:label="@string/title_activity_experience_details"
android:theme="@style/Theme.GuideMeTravelersApp.NoActionBar" />
<activity
android:name=".LoginView.LoginActivity"
android:exported="true"
android:label="@string/title_activity_login"
android:theme="@style/Theme.GuideMeTravelersApp.NoActionBar" />
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.GuideMeTravelersApp.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
But, this seems that it is not enough, because I get the following error when building the project to see the preview:
但是,这似乎还不够,因为我在构建项目以查看预览时收到以下错误:
java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(Unknown Source) at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source) at com.google.android.gms.maps.internal.zzbz.zza(Unknown Source) at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source) at com.google.android.gms.maps.MapView$zzb.createDelegate(Unknown Source) at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(Unknown Source) at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(Unknown Source) at com.google.android.gms.maps.MapView.onCreate(Unknown Source) at com.example.guidemetravelersapp.homescreen.MapViewUtilsKt.getMapLifecycleObserver$lambda-2(MapViewUtils.kt:60) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354) at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:196) at com.example.guidemetravelersapp.homescreen.MapViewUtilsKt$rememberMapViewWithLifecycle$1.invoke(MapViewUtils.kt:48) at com.example.guidemetravelersapp.homescreen.MapViewUtilsKt$rememberMapViewWithLifecycle$1.invoke(MapViewUtils.kt:45) at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:81) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:781) at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:639) at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:733) at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:2980) at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:2980) at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:432) at androidx.compose.ui.layout.SubcomposeLayoutState.subcomposeInto(SubcomposeLayout.kt:259) at androidx.compose.ui.layout.SubcomposeLayoutState.access$subcomposeInto(SubcomposeLayout.kt:145) at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:234) at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:231) at androidx.compose.runtime.snapshots.SnapshotStateObserver.withNoObservations(SnapshotStateObserver.kt:140) at androidx.compose.ui.node.OwnerSnapshotObserver.withNoSnapshotReadObservation$ui_release(OwnerSnapshotObserver.kt:49) at androidx.compose.ui.node.LayoutNode.withNoSnapshotReadObservation$ui_release(LayoutNode.kt:1107) at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:231) at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:226) at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose$ui_release(SubcomposeLayout.kt:215) at androidx.compose.ui.layout.SubcomposeLayoutState$Scope.subcompose(SubcomposeLayout.kt:466) at androidx.compose.material.ScaffoldKt$ScaffoldLayout$1$1$1.invoke(Scaffold.kt:314) at androidx.compose.material.ScaffoldKt$ScaffoldLayout$1$1$1.invoke(Scaffold.kt:241) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1$measure$1.placeChildren(SubcomposeLayout.kt:357) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:149) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186) at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:126) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:125) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:393) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:266) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:221) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:220) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:149) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186) at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:126) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:125) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:149) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186) at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$5.invoke(Box.kt:167) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$5.invoke(Box.kt:163) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:149) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186) at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:126) at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:125) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1$measure$1.placeChildren(SubcomposeLayout.kt:357) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:124) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:359) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:179) at androidx.compose.foundation.layout.FillModifier$measure$1.invoke(Size.kt:632) at androidx.compose.foundation.layout.FillModifier$measure$1.invoke(Size.kt:631) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(Placeable.kt:396) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:151) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelativeWithLayer(Placeable.kt:385) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelativeWithLayer$default(Placeable.kt:246) at androidx.compose.ui.layout.RootMeasurePolicy$measure$2.invoke(RootMeasurePolicy.kt:43) at androidx.compose.ui.layout.RootMeasurePolicy$measure$2.invoke(RootMeasurePolicy.kt:42) at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:68) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:925) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:915) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1788) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:119) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:56) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:915) at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:901) at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:94) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$measure$1$1.placeChildren(DelegatingLayoutNodeWrapper.kt:123) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.placeAt-f8xVGno(DelegatingLayoutNodeWrapper.kt:111) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370) at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(OuterMeasurablePlaceable.kt:149) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:359) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:179) at androidx.compose.ui.node.LayoutNode.place$ui_release(LayoutNode.kt:803) at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:213) at androidx.compose.ui.platform.AndroidComposeView.onMeasure_Original(AndroidComposeView.android.kt:547) at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release(ComposeView.android.kt:278) at androidx.compose.ui.platform.AbstractComposeView.onMeasure_Original(ComposeView.android.kt:265) at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:735) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure_Original(View.java:25466) at android.view.View_Delegate.measure(View_Delegate.java:80) at android.view.View.measure(View.java:25430) at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:673) at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureLayout(RenderSessionImpl.java:256) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:368) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431) at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141) at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:714) at com.android.tools.idea.rendering.RenderTask.lambda$inflate$7(RenderTask.java:870) at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:187) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
When I check the local.properties
file it gives me a warning that the MAPS_API_KEY
is not used.当我检查local.properties
文件时,它会警告我未使用MAPS_API_KEY
。 I am not sure how i can use it.我不确定如何使用它。 I followed what the documentation says, but it is not working.我按照文档中的说明进行操作,但它不起作用。 For the map code I am trying to adapt the Crane sample to my project, which has a Google map.对于地图代码,我正在尝试使Crane 示例适应我的项目,该项目有一个谷歌地图。
Add this in your app module's build.gradle
, in the defaultConfig
closure:将此添加到您的应用程序模块的build.gradle
,在defaultConfig
闭包中:
android {
...
defaultConfig {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
manifestPlaceholders = [MAPS_API_KEY: "${properties.getProperty('MAPS_API_KEY')}"]
...
}
}
And add this meta data in your manifest:并在您的清单中添加此元数据:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Thought dropping the official documentation about this for more information.考虑删除有关此的官方文档以获取更多信息。 It's missing the above solution, but everything else should be there.它缺少上述解决方案,但其他一切都应该在那里。
https://developers.google.com/maps/documentation/android-sdk/config https://developers.google.com/maps/documentation/android-sdk/config
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.