You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: BlinkInputSample/BlinkInputFieldByFieldSample/src/main/java/com/microblink/input/CustomUIElementConfigurator.java
Copy file name to clipboardExpand all lines: BlinkInputSample/BlinkInputTemplatingSample/src/main/java/com/microblink/util/templating/CroatianIDFrontSideTemplatingUtil.java
@@ -140,7 +140,7 @@ Android studio 3.0 should automatically import javadoc from maven dependency. If
140
140
141
141
1. In Android Studio project sidebar, ensure [project view is enabled](https://developer.android.com/sdk/installing/studio-androidview.html)
142
142
2. Expand `External Libraries` entry (usually this is the last entry in project view)
143
-
3. Locate `blinkinput-4.2.0` entry, right click on it and select `Library Properties...`
143
+
3. Locate `blinkinput-4.3.0` entry, right click on it and select `Library Properties...`
144
144
4. A `Library Properties` pop-up window will appear
145
145
5. Click the second `+` button in bottom left corner of the window (the one that contains `+` with little globe)
146
146
6. Window for defining documentation URL will appear
@@ -261,42 +261,15 @@ Camera video preview resolution also matters. In order to perform successful sca
261
261
262
262
### Processor architecture
263
263
264
-
_BlinkInput_ is distributed with **ARMv7**, **ARM64**and **x86**native library binaries.
264
+
_BlinkInput_ is distributed with **ARMv7**, **ARM64**, **x86**and **x86_64**native library binaries.
265
265
266
266
_BlinkInput_ is a native library, written in C++ and available for multiple platforms. Because of this, _BlinkInput_ cannot work on devices with obscure hardware architectures. We have compiled _BlinkInput_ native code only for the most popular Android [ABIs](https://en.wikipedia.org/wiki/Application_binary_interface).
267
267
268
-
Depending on the other application dependencies that you use, there are two cases to consider:
269
-
270
-
#### 1) _BlinkInput_ is the single native library in the application
271
-
272
-
Google decided that as of August2019 all apps on GooglePlay that contain native code need to have native support for64-bit processors (this includes ARM64 and x86_64).
273
-
274
-
This means that you cannot upload application to GooglePlayConsole that supports only 32-bit ABI and does not support corresponding 64-bit ABI.
275
-
276
-
To be able to upload your application which depends on _BlinkInput_, you have to exclude x86 native code from _BlinkInput_.
277
-
278
-
In the `build.gradle` file from your application module, you can do it in this way:
279
-
280
-
```
281
-
android {
282
-
defaultConfig {
283
-
ndk {
284
-
// Tells Gradle to package the following ABIs into your application
285
-
abiFilters 'armeabi-v7a', 'arm64-v8a'
286
-
}
287
-
}
288
-
}
289
-
```
290
-
291
-
#### 2) There are other native libraries in the application
268
+
Even before setting the license key, you should check if the _BlinkInput_ is supported on the current device (see next section:*Compatibility check*).Attempting to call any method from the SDK that relies on native code, such as license check, on a device with unsupported CPU architecture will crash your app.
292
269
293
270
If you are combining _BlinkInput_ library with other libraries that contain native code into your application, make sure you match the architectures of all native libraries.
294
271
295
-
For example, if a third party library has got only ARMv7 and ARM64 versions, you must use exactly ARMv7 and ARM64 versions of _BlinkInput_ with that library, but not x86. Using these architectures will crash your app at the initialization step because JVM will try to load all its native dependencies in the same preferred architecture and will fail with UnsatisfiedLinkError.
296
-
297
-
On the other hand, if a third party library supports more ABI versions than _BlinkInput_, for example, ARMv7, ARM64, x86 and **x86_64**, on devices with preferred ABI x86_64, you cannot use _BlinkInput_.
298
-
299
-
Even before setting the license key, you should check if the _BlinkInput_ is supported on the current device (see next section:*Compatibility check*).Attempting to call any method from the SDK that relies on native code, such as license check, on a device with unsupported CPU architecture will crash your app. You should disable _BlinkInput_ features on x86_64 devices.
272
+
For example, if a third party library has got only ARMv7 and ARM64 versions, you must use exactly ARMv7 and ARM64 versions of _BlinkInput_ with that library, but not x86. Using these architectures will crash your app at the initialization step because JVM will try to load all its native dependencies in the same preferred architecture and will fail with `UnsatisfiedLinkError`.
300
273
301
274
For more information, see [Processor architecture considerations](#archConsider) section.
302
275
@@ -1138,13 +1111,13 @@ This problem is usually solved with transitive Maven dependencies, i.e. when pub
_BlinkInput_ is distributed with **ARMv7**, **ARM64**and **x86** native library binaries.
1114
+
_BlinkInput_ is distributed with **ARMv7**, **ARM64**, **x86** and **x86_64** native library binaries.
1142
1115
1143
1116
**ARMv7** architecture gives the ability to take advantage of hardware accelerated floating point operations and SIMD processing with [NEON](http://www.arm.com/products/processors/technologies/neon.php). This gives _BlinkInput_ a huge performance boost on devices that have ARMv7 processors. Most new devices (all since 2012.) have ARMv7 processor so it makes little sense not to take advantage of performance boosts that those processors can give. Also note that some devices with ARMv7 processors do not support NEON instruction sets, most popular being those based on [NVIDIA Tegra 2](https://en.wikipedia.org/wiki/Tegra#Tegra_2). Since these devices are old by today's standard, _BlinkInput_ does not support them. For the same reason, _BlinkInput_ does not support devices with ARMv5 (`armeabi`) architecture.
1144
1117
1145
1118
**ARM64** is the new processor architecture that most new devices use. ARM64 processors are very powerful and also have the possibility to take advantage of new NEON64SIMD instruction set to quickly process multiple pixels with a single instruction.
1146
1119
1147
-
**x86** and **x86_64** architectures are used on very few devices today, most of them are manufactured before 2015., like [AsusZenfone 4](http://www.gsmarena.com/asus_zenfone_4-5951.php) and they take about 1% of all devices, according to the Device catalog on Google Play Console. Some x86 and x86_64 devices have ARM emulator, but running the _BlinkInput_ on the emulator will give a huge performance penalty. _BlinkInput_ contains x86 native library mostly to support emulators, while it does not support x86_64 ABI.
1120
+
**x86** and **x86_64** architectures are used on very few devices today, most of them are manufactured before 2015, like [AsusZenfone 4](http://www.gsmarena.com/asus_zenfone_4-5951.php) and they take about 1% of all devices, according to the Device catalog on Google Play Console. Some x86 and x86_64 devices have ARM emulator, but running the _BlinkInput_ on the emulator will give a huge performance penalty.
1148
1121
1149
1122
There are some issues to be considered:
1150
1123
@@ -1158,7 +1131,7 @@ There are some issues to be considered:
1158
1131
- x86_64 processors understand x86 instruction set, but x86 processors do not understand x86_64 instruction set
1159
1132
- if x86_64 processor executes x86 code, it does not take advantage of 64-bit registers and use two instructions instead of one for 64-bit operations
1160
1133
1161
-
`LibBlinkInput.aar` archive contains ARMv7, ARM64and x86 builds of the native library. By default, when you integrate _BlinkInput_ into your app, your app will contain native builds for all these processor architectures. Thus, _BlinkInput_ will work on ARMv7, ARM64and x86 devices and will use ARMv7 features on ARMv7 devices and ARM64 features on ARM64 devices. However, the size of your application will be rather large.
1134
+
`LibBlinkInput.aar` archive contains ARMv7, ARM64, x86 and x86_64 builds of the native library. By default, when you integrate _BlinkInput_ into your app, your app will contain native builds for all these processor architectures. Thus, _BlinkInput_ will work on ARMv7, ARM64, x86 and x86_64 devices and will use ARMv7 features on ARMv7 devices and ARM64 features on ARM64 devices. However, the size of your application will be rather large.
1162
1135
1163
1136
## <a name="reduceSize"></a> Reducing the final size of your app
1164
1137
@@ -1175,7 +1148,7 @@ android {
1175
1148
abi {
1176
1149
enable true
1177
1150
reset()
1178
-
include 'x86', 'armeabi-v7a', 'arm64-v8a'
1151
+
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
1179
1152
universalApk true
1180
1153
}
1181
1154
}
@@ -1186,7 +1159,7 @@ With that build instructions, gradle will build four different APK files for you
@@ -1205,7 +1178,7 @@ For more information about creating APK splits with gradle, check [this article
1205
1178
1206
1179
After generating multiple APK's, you need to upload them to Google Play. For tutorial and rules about uploading multiple APK's to GooglePlay, please read the [official Google article about multiple APKs](https://developer.android.com/google/play/publishing/multiple-apks.html).
1207
1180
1208
-
### Removing processor architecture support in gradle without using APK splits
1181
+
### Removing processor architecture support
1209
1182
1210
1183
If you won't be distributing your app via Google Play or for some other reasons want to have single APK of smaller size, you can completely remove support for certain CPU architecture from your APK. **This is not recommended due to [consequences](#archConsequences)**.
1211
1184
@@ -1240,15 +1213,19 @@ where `<ABI>` represents the CPU architecture you want to remove:
1240
1213
- to remove x86 support, use `exclude 'lib/x86/libBlinkInput.so'`
1241
1214
- to remove ARM64 support, use `exclude 'lib/arm64-v8a/libBlinkInput.so'`
1242
1215
- **NOTE**: this is **not recommended**. See [this notice](#64bitNotice).
1216
+
- to remove x86_64 support, use `exclude 'lib/x86_64/libBlinkInput.so'`
1243
1217
1244
1218
You can also remove multiple processor architectures by specifying `exclude` directive multiple times. Just bear in mind that removing processor architecture will have side effects on performance and stability of your app. Please read [this](#archConsequences) for more information.
1245
1219
1246
1220
### <a name="archConsequences"></a> Consequences of removing processor architecture
1247
1221
1248
-
- by removing ARMv7 support, _BlinkInput_ will not work on devices that have ARMv7 processors.
1249
-
- by removing ARM64 support, _BlinkInput_ will not use ARM64 features on ARM64 device
1222
+
- Google decided that as of August 2019 all apps on Google Play that contain native code need to have native support for 64-bit processors (this includes ARM64 and x86_64). This means that you cannot upload application to Google Play Console that supports only 32-bit ABI and does not support corresponding 64-bit ABI.
1223
+
1224
+
- By removing ARMv7 support, _BlinkInput_ will not work on devices that have ARMv7 processors.
1225
+
- By removing ARM64 support, _BlinkInput_ will not use ARM64 features on ARM64 device
1250
1226
- also, some future devices may ship with ARM64 processors that will not support ARMv7 instruction set. Please see [this note](#64bitNotice) for more information.
1251
-
- by removing x86 support, _BlinkInput_ will not work on devices that have x86 processor, except in situations when devices have ARM emulator - in that case, _BlinkInput_ will work, but will be slow and possibly unstable
1227
+
- By removing x86 support, _BlinkInput_ will not work on devices that have x86 processor, except in situations when devices have ARM emulator - in that case, _BlinkInput_ will work, but will be slow and possibly unstable
1228
+
- By removing x86_64 support, _BlinkInput_ will not use 64-bit optimizations on x86_64 processor, but if x86 support is not removed, _BlinkInput_ should work
1252
1229
1253
1230
1254
1231
## <a name="combineNativeLibraries"></a> Combining _BlinkInput_ with other native libraries
Copy file name to clipboardExpand all lines: Release notes.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,26 @@
1
1
# Release notes
2
2
3
+
## v4.3.0
4
+
### Breaking change:
5
+
6
+
Based on the feedback, we have restored support for **x86_64** processor architecture. Due to the architecture specifics, there is no guarantee that the scanning process will work equally well as it does on the ARM architectures. The main reason for restoring support is to ease the compliance issue for developers.
7
+
We distribute SDK with **ARMv7**, **ARM64**, **x86**, and **x86_64** native library binaries.
8
+
9
+
### Improvements:
10
+
11
+
- We have translated complete SDK to following languages: **Croatian**, **Czech**, **English**, **French**, **German**, **Italian**, **Portuguese**, **Slovak**, and **Spanish**.
12
+
- We improved document detection with `DocumentCaptureRecognizer`.
13
+
- We are now delivering the complete list of open source dependencies used in the SDK. Please check the `open-source-software-used` directory.
14
+
15
+
### Minor API changes:
16
+
17
+
- We removed `RecognizerRunnerView` custom attributes: `mb_initialOrientation` and `mb_aspectMode`. Use `RecognizerRunnerView.setInitialOrientation` and `RecognizerRunnerView.setAspectMode` to configure the attributes in the code.
18
+
- We renamed `EMailParser` to `EmailParser`
19
+
- We renamed some methods:
20
+
- `LicensePlatesParser`: `getLicensePlateString` to `getLicensePlate`
21
+
- `RegexParser`: `isUsingSieve` to `shouldUseSieve`, `setMustStartWithWhitespace ` to `setStartWithWhitespace `, `isMustStartWithWhitespace ` to `shouldStartWithWhitespace `, `setMustEndWithWhitespace ` to `setEndWithWhitespace `, `isMustEndWithWhitespace ` to `shouldEndWithWhitespace `
<li><ahref="com/microblink/entities/parsers/date/DateParser.html" title="class in com.microblink.entities.parsers.date" target="classFrame">DateParser</a></li>
55
55
<li><ahref="com/microblink/entities/parsers/date/DateParser.Result.html" title="class in com.microblink.entities.parsers.date" target="classFrame">DateParser.Result</a></li>
56
56
<li><ahref="com/microblink/results/date/DateResult.html" title="class in com.microblink.results.date" target="classFrame">DateResult</a></li>
57
+
<li><ahref="com/microblink/results/date/DateUtils.html" title="class in com.microblink.results.date" target="classFrame">DateUtils</a></li>
57
58
<li><ahref="com/microblink/metadata/image/DebugImageCallback.html" title="interface in com.microblink.metadata.image" target="classFrame"><spanclass="interfaceName">DebugImageCallback</span></a></li>
58
59
<li><ahref="com/microblink/image/DebugImageListener.html" title="interface in com.microblink.image" target="classFrame"><spanclass="interfaceName">DebugImageListener</span></a></li>
59
60
<li><ahref="com/microblink/uisettings/options/DebugImageListenerUIOptions.html" title="interface in com.microblink.uisettings.options" target="classFrame"><spanclass="interfaceName">DebugImageListenerUIOptions</span></a></li>
<li><ahref="com/microblink/entities/detectors/quad/document/DocumentSpecificationPreset.html" title="class in com.microblink.entities.detectors.quad.document" target="classFrame">DocumentSpecificationPreset</a></li>
98
99
<li><ahref="com/microblink/entities/recognizers/templating/dewarpPolicies/DPIBasedDewarpPolicy.html" title="class in com.microblink.entities.recognizers.templating.dewarpPolicies" target="classFrame">DPIBasedDewarpPolicy</a></li>
99
100
<li><ahref="com/microblink/entities/recognizers/blinkid/imageoptions/dpi/DpiOptionsUtils.html" title="class in com.microblink.entities.recognizers.blinkid.imageoptions.dpi" target="classFrame">DpiOptionsUtils</a></li>
100
-
<li><ahref="com/microblink/entities/parsers/email/EMailParser.html" title="class in com.microblink.entities.parsers.email" target="classFrame">EMailParser</a></li>
101
-
<li><ahref="com/microblink/entities/parsers/email/EMailParser.Result.html" title="class in com.microblink.entities.parsers.email" target="classFrame">EMailParser.Result</a></li>
101
+
<li><ahref="com/microblink/entities/parsers/email/EmailParser.html" title="class in com.microblink.entities.parsers.email" target="classFrame">EmailParser</a></li>
102
+
<li><ahref="com/microblink/entities/parsers/email/EmailParser.Result.html" title="class in com.microblink.entities.parsers.email" target="classFrame">EmailParser.Result</a></li>
102
103
<li><ahref="com/microblink/entities/recognizers/blinkid/imageresult/EncodedFullDocumentImageResult.html" title="interface in com.microblink.entities.recognizers.blinkid.imageresult" target="classFrame"><spanclass="interfaceName">EncodedFullDocumentImageResult</span></a></li>
103
104
<li><ahref="com/microblink/entities/recognizers/blinkid/imageoptions/encode/EncodeFullDocumentImagesOptions.html" title="interface in com.microblink.entities.recognizers.blinkid.imageoptions.encode" target="classFrame"><spanclass="interfaceName">EncodeFullDocumentImagesOptions</span></a></li>
104
105
<li><ahref="com/microblink/entities/Entity.html" title="class in com.microblink.entities" target="classFrame">Entity</a></li>
0 commit comments