From 3655c2e1944bf0490575de9a279809f6177b5b09 Mon Sep 17 00:00:00 2001 From: Aniokrait Date: Sun, 17 Aug 2025 00:03:08 +0900 Subject: [PATCH 1/4] Upgrade AGP - package in AndroidManifest.xml is deprecated. Declare namespace in build.gradle instead. - R class package changed because of namespace name changed to globally unique name. - replace deprecated classifier to archiveClassifier --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- sample/build.gradle | 1 + sample/src/main/AndroidManifest.xml | 3 +-- zxing-android-embedded/AndroidManifest.xml | 2 +- zxing-android-embedded/build.gradle | 7 +++++-- .../src/com/google/zxing/client/android/BeepManager.java | 2 ++ .../src/com/journeyapps/barcodescanner/BarcodeView.java | 1 - .../src/com/journeyapps/barcodescanner/CameraPreview.java | 1 - .../com/journeyapps/barcodescanner/CaptureActivity.java | 2 -- .../src/com/journeyapps/barcodescanner/CaptureManager.java | 1 - .../src/com/journeyapps/barcodescanner/DecoderThread.java | 1 - .../journeyapps/barcodescanner/DecoratedBarcodeView.java | 1 - .../src/com/journeyapps/barcodescanner/ViewfinderView.java | 1 - .../journeyapps/barcodescanner/camera/CameraInstance.java | 2 +- 15 files changed, 13 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index 2f030a799..3443de718 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.3' + classpath 'com.android.tools.build:gradle:8.11.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a254..2733ed5dc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample/build.gradle b/sample/build.gradle index 329db202a..4f6fa9a77 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -64,6 +64,7 @@ android { // called context.getMainProject() during module analysis. disable 'UsingOnClickInXml' } + namespace 'example.zxing' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index f73ac68e1..fe91ab52e 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + - + diff --git a/zxing-android-embedded/build.gradle b/zxing-android-embedded/build.gradle index b54e03801..26cd8afb6 100644 --- a/zxing-android-embedded/build.gradle +++ b/zxing-android-embedded/build.gradle @@ -41,6 +41,7 @@ dependencies { } android { + namespace 'com.journeyapps.barcodescanner' resourcePrefix 'zxing_' compileSdkVersion project.androidTargetSdk @@ -73,11 +74,13 @@ android { defaultConfig { minSdkVersion 19 + aarMetadata { + minCompileSdk 19 + } } buildTypes { debug { - versionNameSuffix ".debug" resValue "string", "app_version", "${defaultConfig.versionName}${versionNameSuffix}" } release { @@ -87,7 +90,7 @@ android { } task sourceJar(type: Jar) { - classifier = 'sources' + archiveClassifier = 'sources' from android.sourceSets.main.java.srcDirs } diff --git a/zxing-android-embedded/src/com/google/zxing/client/android/BeepManager.java b/zxing-android-embedded/src/com/google/zxing/client/android/BeepManager.java index f553eb370..53d35b277 100644 --- a/zxing-android-embedded/src/com/google/zxing/client/android/BeepManager.java +++ b/zxing-android-embedded/src/com/google/zxing/client/android/BeepManager.java @@ -27,6 +27,8 @@ import android.os.Vibrator; import android.util.Log; +import com.journeyapps.barcodescanner.R; + import java.io.IOException; /** diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/BarcodeView.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/BarcodeView.java index 65d713148..4e92a9f15 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/BarcodeView.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/BarcodeView.java @@ -7,7 +7,6 @@ import com.google.zxing.DecodeHintType; import com.google.zxing.ResultPoint; -import com.google.zxing.client.android.R; import java.util.HashMap; import java.util.List; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CameraPreview.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CameraPreview.java index b647f8cd9..a70bd5159 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CameraPreview.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CameraPreview.java @@ -21,7 +21,6 @@ import android.view.ViewGroup; import android.view.WindowManager; -import com.google.zxing.client.android.R; import com.journeyapps.barcodescanner.camera.CameraInstance; import com.journeyapps.barcodescanner.camera.CameraParametersCallback; import com.journeyapps.barcodescanner.camera.CameraSettings; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java index 1d4cbe856..3b9212174 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java @@ -5,8 +5,6 @@ import androidx.annotation.NonNull; import android.view.KeyEvent; -import com.google.zxing.client.android.R; - /** * */ diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureManager.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureManager.java index 6e35b10a3..22bdc0cb7 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureManager.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureManager.java @@ -26,7 +26,6 @@ import com.google.zxing.client.android.BeepManager; import com.google.zxing.client.android.InactivityTimer; import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.R; import java.io.File; import java.io.FileOutputStream; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java index d0780077b..1fc403012 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoderThread.java @@ -10,7 +10,6 @@ import com.google.zxing.LuminanceSource; import com.google.zxing.Result; import com.google.zxing.ResultPoint; -import com.google.zxing.client.android.R; import com.journeyapps.barcodescanner.camera.CameraInstance; import com.journeyapps.barcodescanner.camera.PreviewCallback; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoratedBarcodeView.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoratedBarcodeView.java index a070e403a..4c9a5972c 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoratedBarcodeView.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/DecoratedBarcodeView.java @@ -15,7 +15,6 @@ import com.google.zxing.client.android.DecodeFormatManager; import com.google.zxing.client.android.DecodeHintManager; import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.R; import com.journeyapps.barcodescanner.camera.CameraParametersCallback; import com.journeyapps.barcodescanner.camera.CameraSettings; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/ViewfinderView.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/ViewfinderView.java index 4bd023786..ce0968bc2 100755 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/ViewfinderView.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/ViewfinderView.java @@ -27,7 +27,6 @@ import android.view.View; import com.google.zxing.ResultPoint; -import com.google.zxing.client.android.R; import java.util.ArrayList; import java.util.List; diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java index ae54a4db7..f77f6d69f 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/camera/CameraInstance.java @@ -5,7 +5,7 @@ import android.util.Log; import android.view.SurfaceHolder; -import com.google.zxing.client.android.R; +import com.journeyapps.barcodescanner.R; import com.journeyapps.barcodescanner.Size; import com.journeyapps.barcodescanner.Util; From e6732e02381520f369061e112f61f8610ec2b794 Mon Sep 17 00:00:00 2001 From: Aniokrait Date: Sun, 17 Aug 2025 00:59:31 +0900 Subject: [PATCH 2/4] Upgrade target Sdk - `android:exported="true"` is required above Android 12 --- build.gradle | 2 +- sample/src/main/AndroidManifest.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 3443de718..aa1f8cbbf 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,6 @@ subprojects { version = '4.3.0' group = 'com.journeyapps' - ext.androidTargetSdk = 30 + ext.androidTargetSdk = 35 ext.zxingCore = 'com.google.zxing:core:3.4.1' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index fe91ab52e..1e0054ca7 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ + android:theme="@style/AppTheme" + android:exported="true"> From 6b51c751aa49df799b178fe21bbac97deb6b0e83 Mon Sep 17 00:00:00 2001 From: Aniokrait Date: Sun, 17 Aug 2025 09:27:23 +0900 Subject: [PATCH 3/4] Add androidx.activity - Add kotlin android plugin to suppress ` Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found` error. --- build.gradle | 4 ++++ sample/build.gradle | 1 + zxing-android-embedded/build.gradle | 1 + 3 files changed, 6 insertions(+) diff --git a/build.gradle b/build.gradle index aa1f8cbbf..881632a00 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,10 @@ buildscript { } } +plugins { + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false +} + subprojects { repositories { google() diff --git a/sample/build.gradle b/sample/build.gradle index 4f6fa9a77..c5ffc4fca 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.application' +apply plugin: 'org.jetbrains.kotlin.android' android { compileSdkVersion project.androidTargetSdk diff --git a/zxing-android-embedded/build.gradle b/zxing-android-embedded/build.gradle index 26cd8afb6..4d1187118 100644 --- a/zxing-android-embedded/build.gradle +++ b/zxing-android-embedded/build.gradle @@ -33,6 +33,7 @@ if (secretPropsFile.exists()) { dependencies { api project.zxingCore + implementation 'androidx.activity:activity:1.8.0' implementation 'androidx.core:core:1.6.0' implementation 'androidx.fragment:fragment:1.3.6' From d339043929323cedb21baf7efbd76c45270ff2e9 Mon Sep 17 00:00:00 2001 From: Aniokrait Date: Sun, 17 Aug 2025 16:21:47 +0900 Subject: [PATCH 4/4] Add bottom insets --- .../barcodescanner/CaptureActivity.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java index 3b9212174..2a34f8061 100644 --- a/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java +++ b/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureActivity.java @@ -1,23 +1,41 @@ package com.journeyapps.barcodescanner; -import android.app.Activity; import android.os.Bundle; + +import androidx.activity.ComponentActivity; +import androidx.activity.EdgeToEdge; import androidx.annotation.NonNull; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + import android.view.KeyEvent; +import android.view.ViewGroup; /** * */ -public class CaptureActivity extends Activity { +public class CaptureActivity extends ComponentActivity { private CaptureManager capture; private DecoratedBarcodeView barcodeScannerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); barcodeScannerView = initializeContent(); + ViewCompat.setOnApplyWindowInsetsListener(barcodeScannerView.getStatusView(), (view, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + + ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); + mlp.bottomMargin = insets.bottom; + barcodeScannerView.getStatusView().setLayoutParams(mlp); + + return WindowInsetsCompat.CONSUMED; + }); + capture = new CaptureManager(this, barcodeScannerView); capture.initializeFromIntent(getIntent(), savedInstanceState); capture.decode();