[external/jetpack-camera-app]Merge upstream-main branch

Merge up to aa880197
Also adds camera-video dep and uncommented related codes.
Added tracing dep.
Removed camera-extension dep as it is unused.

Test: Compilation successful

Change-Id: Ib1b4a361c0204067a0c62227068a832ce021a56f
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..efeb54e
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,17 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+subdirs = [
+        "app",
+	"core/common",
+	"camera-viewfinder-compose",
+	"data/settings",
+	"domain/camera",
+	"feature",
+
+    ]
+
+
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..11465c3
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,20 @@
+name: "jetpack-camera-app"
+description:
+    "Jetpack Camera App is (will be) a fully functional camera app, focused on "
+    "features used by app developers, and built entirely with CameraX, Kotlin "
+    "and Jetpack Compose. It follows Android design and development best "
+    "practices and it's intended to be a useful reference for developers."
+
+third_party {
+  url {
+    type: HOMEPAGE
+    value: "https://github.com/google/jetpack-camera-app"
+  }
+  url {
+    type: GIT
+    value: "https://github.com/google/jetpack-camera-app"
+  }
+  version: "3ae0900e248937bd7439b3d3c22360f2a7265153"
+  last_upgrade_date { year: 2023 month: 11 day: 17 }
+  license_type: NOTICE
+}
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_APACHE2
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..6a44f69
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,7 @@
+# Default owners are top 3 active developers of the past 1 or 2 years
+# or people with more than 10 commits last year.
+# Please update this list if you find better owner candidates.
+trevormcguire@google.com
+yasith@google.com
+davidjia@google.com
+kcrevecoeur@google.com
diff --git a/app/Android.bp b/app/Android.bp
new file mode 100644
index 0000000..778e3cd
--- /dev/null
+++ b/app/Android.bp
@@ -0,0 +1,35 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_app {
+    name: "jetpack-camera-app",
+    static_libs:[
+	"androidx.compose.material3_material3",
+	"androidx.compose.ui_ui-tooling-preview",
+	"androidx.compose.ui_ui-tooling",
+	"androidx.lifecycle_lifecycle-viewmodel-compose",
+	"androidx.activity_activity-compose",
+	"androidx.core_core-ktx",
+	"androidx.lifecycle_lifecycle-runtime-ktx",
+	"androidx.navigation_navigation-compose",
+	"hilt_android",
+	"androidx.compose.runtime_runtime",
+	"jetpack-camera-app_data_settings",
+	"jetpack-camera-app_feature_preview",
+	"jetpack-camera-app_feature_settings",
+    ],
+    srcs: [
+        "src/main/**/*.kt",
+    ],
+
+    resource_dirs: [
+        "src/main/res",
+    ], 
+    manifest: "src/main/AndroidManifest.xml",
+    sdk_version: "34",
+    min_sdk_version: "21",
+}
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 682206b..42c1a61 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,7 +15,8 @@
   ~ limitations under the License.
   -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
+  xmlns:tools="http://schemas.android.com/tools"
+  package="com.google.jetpackcamera">
 
     <uses-feature
         android:name="android.hardware.camera"
@@ -54,4 +55,5 @@
             </intent-filter>
         </activity>
     </application>
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt b/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt
index aca5cdd..fc87bfc 100644
--- a/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt
+++ b/app/src/main/java/com/google/jetpackcamera/JetpackCameraApplication.kt
@@ -21,5 +21,5 @@
 /**
  * [Application] class for JetpackCameraApp.
  */
-@HiltAndroidApp
-class JetpackCameraApplication : Application()
+@HiltAndroidApp(Application::class)
+class JetpackCameraApplication : Hilt_JetpackCameraApplication()
diff --git a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt
index f0e2723..42220d1 100644
--- a/app/src/main/java/com/google/jetpackcamera/MainActivity.kt
+++ b/app/src/main/java/com/google/jetpackcamera/MainActivity.kt
@@ -60,8 +60,8 @@
 /**
  * Activity for the JetpackCameraApp.
  */
-@AndroidEntryPoint
-class MainActivity : ComponentActivity() {
+@AndroidEntryPoint(ComponentActivity::class)
+class MainActivity : Hilt_MainActivity() {
     private val viewModel: MainActivityViewModel by viewModels()
 
     @VisibleForTesting
diff --git a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt
index aed7433..8193c03 100644
--- a/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt
+++ b/app/src/main/java/com/google/jetpackcamera/ui/JcaApp.kt
@@ -23,9 +23,9 @@
 import androidx.navigation.compose.NavHost
 import androidx.navigation.compose.composable
 import androidx.navigation.compose.rememberNavController
-import com.google.accompanist.permissions.ExperimentalPermissionsApi
-import com.google.accompanist.permissions.isGranted
-import com.google.accompanist.permissions.rememberPermissionState
+//import com.google.accompanist.permissions.ExperimentalPermissionsApi
+//import com.google.accompanist.permissions.isGranted
+//import com.google.accompanist.permissions.rememberPermissionState
 import com.google.jetpackcamera.feature.preview.PreviewMode
 import com.google.jetpackcamera.feature.preview.PreviewScreen
 import com.google.jetpackcamera.feature.preview.PreviewViewModel
@@ -33,27 +33,27 @@
 import com.google.jetpackcamera.ui.Routes.PREVIEW_ROUTE
 import com.google.jetpackcamera.ui.Routes.SETTINGS_ROUTE
 
-@OptIn(ExperimentalPermissionsApi::class)
+//@OptIn(ExperimentalPermissionsApi::class)
 @Composable
 fun JcaApp(
     onPreviewViewModel: (PreviewViewModel) -> Unit,
     /*TODO(b/306236646): remove after still capture*/
     previewMode: PreviewMode
 ) {
-    val permissionState =
-        rememberPermissionState(permission = Manifest.permission.CAMERA)
+//    val permissionState = Manifest.permission.CAMERA
+//        rememberPermissionState(permission = Manifest.permission.CAMERA)
 
-    if (permissionState.status.isGranted) {
+//    if (permissionState.status.isGranted) {
         JetpackCameraNavHost(
             onPreviewViewModel = onPreviewViewModel,
             previewMode = previewMode
         )
-    } else {
-        CameraPermission(
-            modifier = Modifier.fillMaxSize(),
-            cameraPermissionState = permissionState
-        )
-    }
+//    } else {
+//        CameraPermission(
+//            modifier = Modifier.fillMaxSize(),
+//            cameraPermissionState = permissionState
+//        )
+//    }
 }
 
 @Composable
@@ -77,3 +77,4 @@
         }
     }
 }
+
diff --git a/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt b/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt
index 5100dff..adb56e1 100644
--- a/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt
+++ b/app/src/main/java/com/google/jetpackcamera/ui/PermissionsUi.kt
@@ -43,16 +43,16 @@
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
-import com.google.accompanist.permissions.ExperimentalPermissionsApi
-import com.google.accompanist.permissions.PermissionState
+//import com.google.accompanist.permissions.ExperimentalPermissionsApi
+//import com.google.accompanist.permissions.PermissionState
 import com.google.jetpackcamera.R
 
-@OptIn(ExperimentalPermissionsApi::class)
+//@OptIn(ExperimentalPermissionsApi::class)
 @Composable
-fun CameraPermission(modifier: Modifier = Modifier, cameraPermissionState: PermissionState) {
+fun CameraPermission(modifier: Modifier = Modifier) {
     PermissionTemplate(
         modifier = modifier,
-        permissionState = cameraPermissionState,
+//        permissionState = cameraPermissionState,
         painter = painterResource(id = R.drawable.photo_camera),
         iconAccessibilityText = stringResource(id = R.string.camera_permission_accessibility_text),
         title = stringResource(id = R.string.camera_permission_screen_title),
@@ -61,11 +61,11 @@
     )
 }
 
-@OptIn(ExperimentalPermissionsApi::class)
+//@OptIn(ExperimentalPermissionsApi::class)
 @Composable
 fun PermissionTemplate(
     modifier: Modifier = Modifier,
-    permissionState: PermissionState,
+//    permissionState: PermissionState,
     onSkipPermission: (() -> Unit)? = null,
     painter: Painter,
     iconAccessibilityText: String,
@@ -100,7 +100,7 @@
                     .fillMaxWidth()
                     .align(Alignment.CenterHorizontally)
                     .height(IntrinsicSize.Min),
-                permissionState = permissionState,
+//                permissionState = permissionState,
                 requestButtonText = requestButtonText,
                 onSkipPermission = onSkipPermission
             )
@@ -123,11 +123,11 @@
     }
 }
 
-@OptIn(ExperimentalPermissionsApi::class)
+//@OptIn(ExperimentalPermissionsApi::class)
 @Composable
 fun PermissionButtonSection(
     modifier: Modifier = Modifier,
-    permissionState: PermissionState,
+//    permissionState: PermissionState,
     requestButtonText: String,
     onSkipPermission: (() -> Unit)?
 ) {
@@ -138,7 +138,7 @@
                 .align(Alignment.Center)
         ) {
             PermissionButton(
-                permissionState = permissionState,
+//                permissionState = permissionState,
                 requestButtonText = requestButtonText
             )
             Spacer(modifier = Modifier.height(20.dp))
@@ -156,11 +156,11 @@
     }
 }
 
-@OptIn(ExperimentalPermissionsApi::class)
+//@OptIn(ExperimentalPermissionsApi::class)
 @Composable
 fun PermissionButton(
     modifier: Modifier = Modifier,
-    permissionState: PermissionState,
+//    permissionState: PermissionState,
     requestButtonText: String
 ) {
     Button(
@@ -169,7 +169,9 @@
             containerColor = MaterialTheme.colorScheme.primaryContainer,
             contentColor = MaterialTheme.colorScheme.onPrimaryContainer
         ),
-        onClick = { permissionState.launchPermissionRequest() }
+        onClick = {
+//            permissionState.launchPermissionRequest()
+        }
     ) {
         Text(
             modifier = Modifier.padding(10.dp),
@@ -233,3 +235,4 @@
         textAlign = TextAlign.Center
     )
 }
+
diff --git a/camera-viewfinder-compose/Android.bp b/camera-viewfinder-compose/Android.bp
new file mode 100644
index 0000000..2b55a3f
--- /dev/null
+++ b/camera-viewfinder-compose/Android.bp
@@ -0,0 +1,23 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_camera-viewfinder-compose",
+    srcs: ["src/main/**/*.kt"],
+    static_libs: [
+        "androidx.compose.material3_material3",
+	"androidx.compose.runtime_runtime",
+	"androidx.compose.ui_ui-tooling-preview",
+        "androidx.compose.ui_ui-tooling",
+	"androidx.camera_camera-core",
+	"androidx.camera_camera-viewfinder",
+	"androidx.core_core",
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest:"src/main/AndroidManifest.xml"
+}
+
diff --git a/camera-viewfinder-compose/src/main/AndroidManifest.xml b/camera-viewfinder-compose/src/main/AndroidManifest.xml
index 5c675bb..426a891 100644
--- a/camera-viewfinder-compose/src/main/AndroidManifest.xml
+++ b/camera-viewfinder-compose/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.viewfinder">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt b/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt
index 0bdc770..97009b8 100644
--- a/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt
+++ b/camera-viewfinder-compose/src/main/java/com/google/jetpackcamera/viewfinder/CameraPreview.kt
@@ -21,7 +21,6 @@
 import android.view.View
 import androidx.camera.core.Preview.SurfaceProvider
 import androidx.camera.core.SurfaceRequest
-import androidx.camera.view.PreviewView.ImplementationMode
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -39,6 +38,20 @@
 
 private const val TAG = "Preview"
 
+enum class ImplementationMode {
+    /**
+     * Use a [SurfaceView] for the preview when possible. If the device
+     * doesn't support [SurfaceView], [PreviewView] will fall back to use a
+     * [TextureView] instead.
+     */
+    PERFORMANCE,
+
+    /**
+     * Use a [TextureView] for the preview.
+     */
+    COMPATIBLE
+}
+
 @Composable
 fun CameraPreview(
     modifier: Modifier,
diff --git a/core/common/Android.bp b/core/common/Android.bp
new file mode 100644
index 0000000..552b888
--- /dev/null
+++ b/core/common/Android.bp
@@ -0,0 +1,19 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_core_common",
+    srcs: ["src/main/**/*.kt"],
+    static_libs: [
+        "androidx.core_core-ktx",
+	"hilt_android",
+        "androidx.appcompat_appcompat",
+	"com.google.android.material_material",
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest:"src/main/AndroidManifest.xml"
+}
diff --git a/core/common/src/main/AndroidManifest.xml b/core/common/src/main/AndroidManifest.xml
index 5c675bb..1609b38 100644
--- a/core/common/src/main/AndroidManifest.xml
+++ b/core/common/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.core.common">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/data/settings/Android.bp b/data/settings/Android.bp
new file mode 100644
index 0000000..2abb0b4
--- /dev/null
+++ b/data/settings/Android.bp
@@ -0,0 +1,43 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+java_library {
+    name: "jetpack-camera-app-protos-java-gen",
+    installable: false,
+    proto: {
+        type: "lite",
+	canonical_path_from_root: false,
+	local_include_dirs: ["src/main/proto"],
+    },
+    srcs: [
+        "src/main/proto/**/*.proto",
+    ],
+    min_sdk_version: "21",
+    sdk_version: "34",
+
+    static_libs: [
+        "libprotobuf-java-lite",
+    ]
+}
+
+
+android_library {
+    name: "jetpack-camera-app_data_settings",
+    srcs: [
+        "src/main/**/*.kt",
+    ],
+    static_libs: [
+        "hilt_android",
+        "kotlinx-coroutines-core",
+	"androidx.datastore_datastore",
+	"jetpack-camera-app-protos-java-gen",
+	"libprotobuf-java-lite",
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest:"src/main/AndroidManifest.xml",
+}
+
diff --git a/data/settings/src/main/AndroidManifest.xml b/data/settings/src/main/AndroidManifest.xml
index 5c675bb..da78212 100644
--- a/data/settings/src/main/AndroidManifest.xml
+++ b/data/settings/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.data.settings">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/domain/camera/Android.bp b/domain/camera/Android.bp
new file mode 100644
index 0000000..e34d990
--- /dev/null
+++ b/domain/camera/Android.bp
@@ -0,0 +1,24 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_domain_camera",
+    srcs: ["src/main/**/*.kt"],
+    static_libs: [
+        "androidx.concurrent_concurrent-futures-ktx",
+        "hilt_android",
+        "androidx.camera_camera-core",
+        "androidx.camera_camera-viewfinder",
+        "androidx.camera_camera-video",
+        "androidx.camera_camera-camera2",
+        "androidx.camera_camera-lifecycle",
+        "jetpack-camera-app_data_settings",
+        "jetpack-camera-app_core_common",
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest: "src/main/AndroidManifest.xml",
+}
diff --git a/domain/camera/src/main/AndroidManifest.xml b/domain/camera/src/main/AndroidManifest.xml
index 1e7c244..2aa7dee 100644
--- a/domain/camera/src/main/AndroidManifest.xml
+++ b/domain/camera/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+  package="com.google.jetpackcamera.domain.camera">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt
index aa0f372..a640991 100644
--- a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt
+++ b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CameraXCameraUseCase.kt
@@ -255,6 +255,7 @@
             ContentValues().apply {
                 put(MediaStore.Video.Media.DISPLAY_NAME, name)
             }
+
         val mediaStoreOutput =
             MediaStoreOutputOptions.Builder(
                 application.contentResolver,
@@ -514,3 +515,4 @@
             else -> throw IllegalArgumentException("Invalid lens facing type: $lensFacing")
         }
 }
+
diff --git a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt
index a056ec0..e55ae35 100644
--- a/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt
+++ b/domain/camera/src/main/java/com/google/jetpackcamera/domain/camera/CoroutineCameraProvider.kt
@@ -71,5 +71,5 @@
         }
     }
 
-    override fun getLifecycle() = lifecycleRegistry
+    override public val lifecycle: Lifecycle = lifecycleRegistry
 }
diff --git a/feature/preview/Android.bp b/feature/preview/Android.bp
new file mode 100644
index 0000000..19485f4
--- /dev/null
+++ b/feature/preview/Android.bp
@@ -0,0 +1,35 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_feature_preview",
+    srcs: ["src/main/**/*.kt"],
+    resource_dirs: [
+        "src/main/res",
+    ],
+    static_libs: [
+        "androidx.compose.runtime_runtime",
+        "androidx.compose.material3_material3",
+        "androidx.compose.ui_ui-tooling-preview",
+        "androidx.tracing_tracing-ktx",
+        "hilt_android",
+        "androidx.hilt_hilt-navigation-compose",
+        "androidx.compose.ui_ui-tooling",
+        "kotlinx_coroutines_guava",
+        "androidx.datastore_datastore",
+        "libprotobuf-java-lite",
+        "androidx.camera_camera-core",
+        "androidx.camera_camera-viewfinder",
+        "jetpack-camera-app_data_settings",
+        "jetpack-camera-app_domain_camera",
+        "jetpack-camera-app_camera-viewfinder-compose",
+        "jetpack-camera-app_feature_quicksettings",
+
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest: "src/main/AndroidManifest.xml",
+}
diff --git a/feature/preview/src/main/AndroidManifest.xml b/feature/preview/src/main/AndroidManifest.xml
index 5c675bb..1fb3b89 100644
--- a/feature/preview/src/main/AndroidManifest.xml
+++ b/feature/preview/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.feature.preview">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/feature/quicksettings/Android.bp b/feature/quicksettings/Android.bp
new file mode 100644
index 0000000..8b0e3b6
--- /dev/null
+++ b/feature/quicksettings/Android.bp
@@ -0,0 +1,28 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_feature_quicksettings",
+    srcs: ["src/main/**/*.kt"],
+    static_libs: [
+        "androidx.compose.material3_material3",
+	"androidx.compose.runtime_runtime",
+        "androidx.compose.ui_ui-tooling-preview",
+        "androidx.compose.ui_ui-tooling",
+        "androidx.camera_camera-core",
+        "androidx.camera_camera-viewfinder",
+	"kotlinx_coroutines_guava",
+	"jetpack-camera-app_data_settings",
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest:"src/main/AndroidManifest.xml",
+    resource_dirs: [
+        "src/main/res",
+    ],
+}
+
+
diff --git a/feature/quicksettings/src/main/AndroidManifest.xml b/feature/quicksettings/src/main/AndroidManifest.xml
index 5c675bb..331bca7 100644
--- a/feature/quicksettings/src/main/AndroidManifest.xml
+++ b/feature/quicksettings/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.quicksettings">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/feature/settings/Android.bp b/feature/settings/Android.bp
new file mode 100644
index 0000000..2e21fb8
--- /dev/null
+++ b/feature/settings/Android.bp
@@ -0,0 +1,31 @@
+package {
+    default_applicable_licenses: [
+        "Android-Apache-2.0",
+    ],
+}
+
+android_library {
+    name: "jetpack-camera-app_feature_settings",
+    srcs: ["src/main/**/*.kt"],
+    resource_dirs: [
+        "src/main/res",
+    ],
+    static_libs: [
+        "androidx.compose.material3_material3",
+	"androidx.compose.material_material-icons-core",
+	"androidx.compose.runtime_runtime",
+	"androidx.compose.ui_ui-tooling-preview",
+	"hilt_android",
+        "androidx.compose.ui_ui-tooling",
+	"kotlinx_coroutines_guava",
+	"androidx.datastore_datastore",
+	"libprotobuf-java-lite",
+	"jetpack-camera-app_data_settings",
+	"androidx.hilt_hilt-navigation-compose",
+
+    ],
+    sdk_version: "34",
+    min_sdk_version: "21",
+    manifest:"src/main/AndroidManifest.xml"
+}
+
diff --git a/feature/settings/src/main/AndroidManifest.xml b/feature/settings/src/main/AndroidManifest.xml
index 5c675bb..cfecf54 100644
--- a/feature/settings/src/main/AndroidManifest.xml
+++ b/feature/settings/src/main/AndroidManifest.xml
@@ -14,6 +14,6 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<manifest>
+<manifest package="com.google.jetpackcamera.settings">
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt
index e970216..01ea1a4 100644
--- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt
+++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt
@@ -26,7 +26,7 @@
 import androidx.compose.foundation.selection.selectableGroup
 import androidx.compose.foundation.selection.toggleable
 import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.ArrowBack
+import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material3.AlertDialog
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
@@ -71,7 +71,7 @@
         },
         navigationIcon = {
             IconButton(onClick = { navBack() }) {
-                Icon(Icons.Filled.ArrowBack, stringResource(id = R.string.nav_back_accessibility))
+                Icon(Icons.AutoMirrored.Filled.ArrowBack, stringResource(id = R.string.nav_back_accessibility))
             }
         }
     )