From 14479a4a13b60a07d9ae7259e815d481c41b98aa Mon Sep 17 00:00:00 2001 From: Markus Geilehner Date: Thu, 30 Jul 2020 10:44:58 +0200 Subject: [PATCH 1/3] Create .gitignore Added Sample for another Tech-Stack Setup. - VueJS - Ionic - CapacitorJS - ABBYY Signed-off-by: Markus Geilehner --- sample-ionic-capacitor-vuejs/.gitignore | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sample-ionic-capacitor-vuejs/.gitignore diff --git a/sample-ionic-capacitor-vuejs/.gitignore b/sample-ionic-capacitor-vuejs/.gitignore new file mode 100644 index 0000000..f4518aa --- /dev/null +++ b/sample-ionic-capacitor-vuejs/.gitignore @@ -0,0 +1,26 @@ +.DS_Store +node_modules +/dist +/libs +/ios +/assets +/android + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? From 69dfcba6a7b6f212ca63b7e4a199ebfe6e914d66 Mon Sep 17 00:00:00 2001 From: Markus Geilehner Date: Thu, 30 Jul 2020 10:46:37 +0200 Subject: [PATCH 2/3] Added new TechStack Sample Added a sample for ABBYY RTR SDK with the following Tech Setup: - Ionic - CapacitorJS - VueJS Signed-off-by: Markus Geilehner --- .gitignore | 4 + sample-ionic-capacitor-vuejs/.browserslistrc | 3 + sample-ionic-capacitor-vuejs/.editorconfig | 5 + sample-ionic-capacitor-vuejs/.eslintrc.js | 17 ++ sample-ionic-capacitor-vuejs/.gitignore | 1 + sample-ionic-capacitor-vuejs/README.md | 237 ++++++++++++++++++ .../capacitor.config.json | 13 + sample-ionic-capacitor-vuejs/package.json | 38 +++ .../public/favicon.ico | Bin 0 -> 4286 bytes .../public/index.html | 17 ++ sample-ionic-capacitor-vuejs/src/App.vue | 30 +++ .../src/assets/logo.png | Bin 0 -> 6849 bytes sample-ionic-capacitor-vuejs/src/main.js | 14 ++ .../src/router/index.js | 16 ++ .../src/views/Home.vue | 51 ++++ 15 files changed, 446 insertions(+) create mode 100644 .gitignore create mode 100644 sample-ionic-capacitor-vuejs/.browserslistrc create mode 100644 sample-ionic-capacitor-vuejs/.editorconfig create mode 100644 sample-ionic-capacitor-vuejs/.eslintrc.js create mode 100644 sample-ionic-capacitor-vuejs/README.md create mode 100644 sample-ionic-capacitor-vuejs/capacitor.config.json create mode 100644 sample-ionic-capacitor-vuejs/package.json create mode 100644 sample-ionic-capacitor-vuejs/public/favicon.ico create mode 100644 sample-ionic-capacitor-vuejs/public/index.html create mode 100644 sample-ionic-capacitor-vuejs/src/App.vue create mode 100644 sample-ionic-capacitor-vuejs/src/assets/logo.png create mode 100644 sample-ionic-capacitor-vuejs/src/main.js create mode 100644 sample-ionic-capacitor-vuejs/src/router/index.js create mode 100644 sample-ionic-capacitor-vuejs/src/views/Home.vue diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15161ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ + +sample-ionic-capacitor-vuejs/libs/ios/MobileImaging.framework/MobileImaging +sample-ionic-capacitor-vuejs/libs/ios/MobileImaging.framework/Info.plist +sample-ionic-capacitor-vuejs/package-lock.json diff --git a/sample-ionic-capacitor-vuejs/.browserslistrc b/sample-ionic-capacitor-vuejs/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/sample-ionic-capacitor-vuejs/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/sample-ionic-capacitor-vuejs/.editorconfig b/sample-ionic-capacitor-vuejs/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/sample-ionic-capacitor-vuejs/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/sample-ionic-capacitor-vuejs/.eslintrc.js b/sample-ionic-capacitor-vuejs/.eslintrc.js new file mode 100644 index 0000000..5bf5bfa --- /dev/null +++ b/sample-ionic-capacitor-vuejs/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: [ + 'plugin:vue/essential', + '@vue/standard' + ], + parserOptions: { + ecmaVersion: 2020 + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' + } +} diff --git a/sample-ionic-capacitor-vuejs/.gitignore b/sample-ionic-capacitor-vuejs/.gitignore index f4518aa..d86d636 100644 --- a/sample-ionic-capacitor-vuejs/.gitignore +++ b/sample-ionic-capacitor-vuejs/.gitignore @@ -5,6 +5,7 @@ node_modules /ios /assets /android +/.gradle # local env files .env.local diff --git a/sample-ionic-capacitor-vuejs/README.md b/sample-ionic-capacitor-vuejs/README.md new file mode 100644 index 0000000..b4dda79 --- /dev/null +++ b/sample-ionic-capacitor-vuejs/README.md @@ -0,0 +1,237 @@ +# How to add ABBYY Mobile Capture SDK to your Ionic Capacitor - VueJS app + +To start developing an Ionic-based app with *Capacitor instead of Cordova* using ABBYY Mobile Capture SDK features, you need to add ABBYY Mobile Capture SDK Cordova Plugin and the ionic native ABBBYY RTR SDK, then add target platforms and the Cordova plugin to your project, and thereafter copy the ABBYY Mobile Capture SDK assets and native libraries for Android and iOS, as described below. + +## Adding Cordova Plugin +Add the plugin to your project from npm. It is recommended to add the 1.0.16 [cordova-plugin-abbyy-rtr-sdk](https://www.npmjs.com/package/cordova-plugin-abbyy-rtr-sdk) version, as it supports all up-to-date changes. + +`npm install cordova-plugin-abbyy-rtr-sdk@1.0.16` + +Add the ionic-native plugin to your project from npm. + +`npm install @ionic-native/abbyy-rtr` + +Run the next command to apply changes: + +`npx cap sync` + +## Projects set-up + +### ABBYY MobileCapture environment setup +1. Request ABBYY Mobile Capture trial version on the [ABBYY website](https://www.abbyy.com/mobile-capture-sdk/#request-demo) and add it to your project: + +* Copy iOS `assets` directory to the project into `../assets` folder +* Copy your license into `../assets` with MobileCapture.License name +* Copy Android `libs` directory to the project into `../libs/android` folder +* Copy iOS `libs` directory to the project into `../libs/ios` folder + +Your folder / project strucuture should look like the following: + +``` +... +- assets +- libs + - android + - ios +- node_modules +- ios (if already added this platform `npx cap add ios`) +- android (if already added this platform `npx cap add android`) +- src +... +``` + + + +2. Proceed setup depending on the platform: + +#### Android setup + +Edit the **android/build.gradle**: + +``` +allprojects { + repositories { + flatDir { + // Search path for Mobile Capture libs + dirs '../../libs/android' + } + google() + jcenter() + } +} +``` + +Add the following code to the same gradle file to fix Ionic and Cordova Java version conflict: + +``` +subprojects { + afterEvaluate { + android { + compileOptions { + sourceCompatibility 1.8 + targetCompatibility 1.8 + } + } + + } +} +``` + +Edit the **android/app/build.gradle**: + +``` +android { + ... + sourceSets { + main { + // Mobile Capture assets + assets.srcDirs += ['../../assets'] + } + } +} +Add the libs to the application in the same gradle file: +repositories { + flatDir{ + // Search path for Mobile Capture libs + dirs '../../libs/android' + } +} +``` + +Set minimum SDK version to '21' in the **android/variables.gradle**. + +#### iOS setup + +For easier setup open XCode to follow the instructions below. + +`npx cap open ios` + +Add to the **ios/App/Podfile** file the paths to the lib files: + +``` +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + + ... + + # Settings to use Mobile Capture SDK. + config.build_settings['ENABLE_BITCODE'] = "NO" + config.build_settings['FRAMEWORK_SEARCH_PATHS'] = "$(inherited) ../../../libs/ios" + end + end +end +``` + +To add the license file, the resource files and set up the copying rules, in **Build Phases** add one more Run Script phase. The **copy_assets.py** script, added to the phase, will automatically copy all resource files to corresponding destinations and add necessary dictionaries. +For this select your project (not the Pods project) and select your App in **Target** group and click **Build Phases** in the tab menu. There you can add a **New Runscript** by clicking the **+**-Icon. + +``` +python "${SRCROOT}/../../assets/copy_assets.py" +cp "${SRCROOT}/../../assets/MobileCapture.License" "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/" +``` + +In **Build Phases**, add a new **Run Script** phase where XCode should run the **copy_frameworks.sh** script that removes the frameworks for the non-active CPU architectures (the complete list depends on the project settings), and sign the resulting framework. This is a required step before uploading your application to App Store. + +``` +/bin/sh "${SRCROOT}/../../libs/ios/copy_frameworks.sh" +``` + +Select your project in the **Target** group and open the **Build Settings** tab. In the **Search Paths** section add to the **Framework Search Paths** the following path: +``` +"../../libs/ios" +``` + +On the **Build Settings** tab set **Enable Bitcode** option to **No**. + +In the **info.plist** file add permission for working with camera and gallery **if necessary**. + +Apply the settings: + +``` +cd ios/App +pod install +``` + +Afterwards you can build your application, see instruction below. +If you have any path errors try to delete the **Derived Data** Folder and change the paths. + +**Important!** A certain folder structure is required for the setup. Make sure to change the paths if your folder structure differs from the following one: + +``` +assets/ + bcr/ + ... + dictionaries/ + ... + ... + MobileCapture.License +libs/ + android/ + abbyy-rtr-sdk-1.0.aar + abbyy-ui-1.0.aar + ios/ + AbbyyRtrSDK.framework + AbbyyUI.framework + ... +[APPLICATION_FOLDER]/ + ... +``` + +## Code sample + +``` +... +import { AbbyyRTR } from '@ionic-native/abbyy-rtr' +... + +methods: { + startTextExtraction () { + AbbyyRTR.startTextCapture({ + isFlashlightVisible: true, + isStopButtonVisible: true, + stopWhenStable: true, + recognitionLanguages: ['English', 'German'], + areaOfInterest: '0.9 0.1' + }).then(res => { + console.log('detected: ' + JSON.stringify(res)) + }).catch(err => { + console.log('error has occured') + console.log(JSON.stringify(err)) + if (err === undefined) { + console.error('undefined error?!') + } + }) + } + } +``` + +## How to run the sample from distributive + +1. Request ABBYY Mobile Capture trial version on the [ABBYY website](https://www.abbyy.com/mobile-capture-sdk/#request-demo) and add it to your project: + +* Copy iOS `assets` directory to the project into `../assets` folder +* Copy your license into `../assets` with MobileCapture.License name +* Copy Android `libs` directory to the project into `../libs/android` folder +* Copy iOS `libs` directory to the project into `../libs/ios` folder + +2. Add the plugin and follow the instructions above, apply changes: + +``` +npm install +npm run build +npx cap sync +``` + +3. To run application do the following: +* Android: + * **From console:** + Execute `npx cap open android` from the sample root + * **From Android Studio:** + Click `Run app` button +* iOS: + * **From console:** + Execute `npx cap open ios` from the sample root + * **From Xcode:** + Click `Run` button + diff --git a/sample-ionic-capacitor-vuejs/capacitor.config.json b/sample-ionic-capacitor-vuejs/capacitor.config.json new file mode 100644 index 0000000..edc9bed --- /dev/null +++ b/sample-ionic-capacitor-vuejs/capacitor.config.json @@ -0,0 +1,13 @@ +{ + "appId": "io.geilehner.abbyy", + "appName": "sample-ionic-capacitor-vuejs", + "bundledWebRuntime": false, + "npmClient": "npm", + "webDir": "dist", + "plugins": { + "SplashScreen": { + "launchShowDuration": 0 + } + }, + "cordova": {} +} diff --git a/sample-ionic-capacitor-vuejs/package.json b/sample-ionic-capacitor-vuejs/package.json new file mode 100644 index 0000000..8cdfabe --- /dev/null +++ b/sample-ionic-capacitor-vuejs/package.json @@ -0,0 +1,38 @@ +{ + "name": "sample-ionic-capacitor-vuejs", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@capacitor/android": "^2.3.0", + "@capacitor/cli": "^2.3.0", + "@capacitor/core": "^2.3.0", + "@capacitor/ios": "^2.3.0", + "@ionic-native/abbyy-rtr": "^5.27.0", + "@ionic-native/core": "^5.27.0", + "@ionic/core": "^5.3.0", + "@ionic/vue": "0.0.9", + "cordova-plugin-abbyy-rtr-sdk": "^1.0.16", + "ionicons": "^4.5.9-1", + "vue": "^2.6.11", + "vue-router": "^3.2.0" + }, + "devDependencies": { + "@vue/cli-plugin-eslint": "^4.4.0", + "@vue/cli-service": "^4.4.0", + "@vue/eslint-config-standard": "^5.1.2", + "eslint": "^6.7.2", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.2.2", + "sass": "^1.26.5", + "sass-loader": "^8.0.2", + "vue-template-compiler": "^2.6.11" + } +} diff --git a/sample-ionic-capacitor-vuejs/public/favicon.ico b/sample-ionic-capacitor-vuejs/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/sample-ionic-capacitor-vuejs/public/index.html b/sample-ionic-capacitor-vuejs/public/index.html new file mode 100644 index 0000000..4123528 --- /dev/null +++ b/sample-ionic-capacitor-vuejs/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/sample-ionic-capacitor-vuejs/src/App.vue b/sample-ionic-capacitor-vuejs/src/App.vue new file mode 100644 index 0000000..deefd22 --- /dev/null +++ b/sample-ionic-capacitor-vuejs/src/App.vue @@ -0,0 +1,30 @@ + + + diff --git a/sample-ionic-capacitor-vuejs/src/assets/logo.png b/sample-ionic-capacitor-vuejs/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 + import(/* webpackChunkName: "home" */ '../views/Home.vue') + } + ] +}) +export default router diff --git a/sample-ionic-capacitor-vuejs/src/views/Home.vue b/sample-ionic-capacitor-vuejs/src/views/Home.vue new file mode 100644 index 0000000..01af2b2 --- /dev/null +++ b/sample-ionic-capacitor-vuejs/src/views/Home.vue @@ -0,0 +1,51 @@ + + + From 8de805804a49a47b61f99f31daabd9572f12a6aa Mon Sep 17 00:00:00 2001 From: Markus Geilehner Date: Thu, 30 Jul 2020 10:52:42 +0200 Subject: [PATCH 3/3] Fixed Readme Fixed path errors which occured when following the instructions in the README.md for setting up a project. Signed-off-by: Markus Geilehner --- sample-ionic/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sample-ionic/README.md b/sample-ionic/README.md index 659368c..d19d9b5 100644 --- a/sample-ionic/README.md +++ b/sample-ionic/README.md @@ -32,7 +32,7 @@ allprojects { repositories { flatDir { // Search path for Mobile Capture libs - dirs '../../../libs/android' + dirs '../../libs/android' } google() jcenter() @@ -64,7 +64,7 @@ android { sourceSets { main { // Mobile Capture assets - assets.srcDirs += ['../../../assets'] + assets.srcDirs += ['../../assets'] } } } @@ -92,7 +92,7 @@ post_install do |installer| # Settings to use Mobile Capture SDK. config.build_settings['ENABLE_BITCODE'] = "NO" - config.build_settings['FRAMEWORK_SEARCH_PATHS'] = "$(inherited) ../../../../libs/ios" + config.build_settings['FRAMEWORK_SEARCH_PATHS'] = "$(inherited) ../../../libs/ios" end end end @@ -101,22 +101,22 @@ end To add the license file, the resource files and set up the copying rules, in **Build Phases** add one more Run Script phase. The **copy_assets.py** script, added to the phase, will automatically copy all resource files to corresponding destinations and add necessary dictionaries. ``` -python "${SRCROOT}/../../../assets/copy_assets.py" -cp ../../../assets/MobileCapture.License" $TARGET_BUILD_DIR/$WRAPPER_NAME/" +python "${SRCROOT}/../../assets/copy_assets.py" +cp "${SRCROOT}/../../assets/MobileCapture.License" "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/" ``` In **Build Phases**, add a new **Run Script** phase. Run the **copy_frameworks.sh** script that removes the frameworks for the non-active CPU architectures (the complete list depends on the project settings), and sign the resulting framework. This is a required step before uploading your application to App Store. ``` -/bin/sh "${SRCROOT}/../../../libs/ios/copy_frameworks.sh" +/bin/sh "${SRCROOT}/../../libs/ios/copy_frameworks.sh" ``` Select your project in the **Target** group and open the **Build Settings** tab. In the **Search Paths** section add to the **Framework Search Paths** the following path: ``` -../../../libs/ios +"../../libs/ios" ``` -On the **Build Options** tab set **Enable Bitcode** option to **No**. +On the **Build Settings** tab set **Enable Bitcode** option to **No**. In the **info.plist** file add permission for working with camera and gallery if necessary.