Skip to main content

Building Production Apps | React Native Barcode Scanner

iOS

The Scanbot Barcode Scanner SDK iOS Framework (included in React Native Barcode Scanner Plugin) is provided as Pod via https://cocoapods.org.

Because React Native apps are normal native apps at the end of the day, the way they are deployed to the App Store is just like any other native app.

Please, consult the official Apple documentation on Submitting Apps to the App Store for more information.

Android

Scanbot Barcode Scanner SDK uses native libraries under the hood and supports the following ABIs: armeabi-v7a, arm64-v8a, x86 and x86_64.

To exclude certain ABIs, use the abiFilters property in the Android Gradle settings of your project.

Please check and adjust the abiFilters configuration in your build.gradle file accordingly:

android {
...
defaultConfig {
...
ndk {
// a typical production configuration:
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
}

💡 However, if you need to support all architectures and to optimize the APK size, we highly recommend checking out the Android App Bundle approach. It allows you to create and distribute dedicated and smaller APKs via the PlayStore (basically it is similar to the iOS App Store approach).

Proguard

Starting from v4.2.0, consumer ProGuard rules are integrated into the Scanbot Barcode SDK React Native Plugin and automatically applied to customers' modules.

If you use an older version and have ProGuard/R8 enabled for the release/production build, please add the following rules:

For the Scanbot Barcode SDK React Barcode Native module

-keeppackagenames io.scanbot.barcodesdk.plugin.reactnative.**
-keep public class io.scanbot.barcodesdk.plugin.reactnative.** { *; }
-keep public class io.scanbot.sdk.ui.** { *; }

For the native Scanbot Barcode SDK

If you use ProGuard for your release builds, please add the following ProGuard rules for all Scanbot Barcode Scanner SDK Packages:

Since Scanbot Barcode Scanner SDK for Android version 1.1.7, consumer ProGuard rules are integrated into the library and automatically applied to customers' modules.

-keeppackagenames io.scanbot.barcodescanner.**
-keep public class io.scanbot.barcodescanner.**{ *; }

-keeppackagenames io.scanbot.sdk.barcode.**
-keep public class io.scanbot.sdk.barcode.** { *; }

-keeppackagenames io.scanbot.sdk.barcode_scanner.**
-keep public class io.scanbot.sdk.barcode_scanner.** { *; }

-keeppackagenames io.scanbot.sdk.flutter.**
-keep public class io.scanbot.sdk.flutter.**{ *; }

-keeppackagenames io.scanbot.sap.**
-keep public class io.scanbot.sap.** { *; }

-keepclassmembers enum io.scanbot.** {*;}
-keepclassmembers class io.scanbot.** extends java.lang.Enum {
<fields>;
public static **[] values();
public static ** valueOf(java.lang.String);
}

# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
-dontwarn org.jetbrains.annotations.**

-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-keep public class kotlin.reflect.jvm.internal.impl.** { public *; }
-keepclassmembers class kotlin.Metadata {
public <methods>;
}

##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { <fields>; }

# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken

##---------------End: proguard configuration for Gson ----------

Want to scan longer than one minute?

Generate a free trial license to test the Scanbot SDK thoroughly.

Get your free Trial License

What do you think of this documentation?


On this page

Scroll to top