diff --git a/qb-mobile/android/app/build.gradle b/qb-mobile/android/app/build.gradle index 7c8e853..0364d86 100644 --- a/qb-mobile/android/app/build.gradle +++ b/qb-mobile/android/app/build.gradle @@ -9,6 +9,12 @@ android { namespace = "com.example.qb_mobile" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion + + packagingOptions { + jniLibs { + useLegacyPackaging = true + } + } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 @@ -37,6 +43,18 @@ android { signingConfig = signingConfigs.debug } } + + sourceSets { + main { + jniLibs.srcDirs += "native" + } + debug { + jniLibs.srcDirs += "native" + } + profile { + jniLibs.srcDirs += "native" + } + } } flutter { diff --git a/qb-mobile/android/app/src/main/AndroidManifest.xml b/qb-mobile/android/app/src/main/AndroidManifest.xml index aeebc72..9956708 100644 --- a/qb-mobile/android/app/src/main/AndroidManifest.xml +++ b/qb-mobile/android/app/src/main/AndroidManifest.xml @@ -1,10 +1,15 @@ - + + android:icon="@mipmap/ic_launcher" + android:extractNativeLibs="true" + tools:replace="android:extractNativeLibs" > onIosBackground(ServiceInstance service) async { } @pragma('vm:entry-point') - void onStart(ServiceInstance service) async { - final cacheDir = await getApplicationCacheDirectory(); - final file = File('${cacheDir.path}/bin/qb-daemon'); - //if(!await file.exists()) { - await copyBinary(file); - //} - - final process = await processManager.start([file.path, '--no-ipc --std']); - process.stdout.listen((data) { - print("recv: $data"); - }); + final dir = await getApplicationSupportDirectory(); + final deviceInfo = DeviceInfoPlugin(); + print("kekw"); + if (Platform.isAndroid) { + final binaryAbis = ["arm64-v8a", "armeabi-v7a", "x86_64"]; + final androidInfo = await deviceInfo.androidInfo; + final supportedAbis = androidInfo.supportedAbis; + final abi = binaryAbis.firstWhere((abi) => supportedAbis.contains(abi)); + //final file = File('${dir.path}/bin/qb-daemon-$abi'); + //if(!await file.exists()) { + //await copyBinary('qb-daemon-$abi', file); + //} + + final fileProc = await processManager.run(['ls', '-la', '/data/app/com.example.qb_mobile.apk']); + print(fileProc.stdout); + print(fileProc.stderr); + + final file = File(''); + final process = await processManager.run([file.path, '--no-ipc --std'], runInShell: true); + print(process.stderr); + process.stdout.listen((data) { + print("recv: $data"); + }); + } else { + throw UnimplementedError("QuixByte does not support this device (yet)!"); + } service.on("stop").listen((event) { service.stopSelf(); @@ -75,15 +91,16 @@ void onStart(ServiceInstance service) async { }); } -Future copyBinary(File dst) async { - await dst.create(recursive: true); - final src = await rootBundle.load("assets/bin/qb-daemon"); - await dst.writeAsBytes(src.buffer.asUint8List(src.offsetInBytes, src.lengthInBytes)); - print(src.lengthInBytes); - - final chmodProc = await processManager.run(['chmod', '+x', dst.path], runInShell: true); - print(chmodProc.stdout); - - final fileProc = await processManager.run(['file', dst.path]); - print(fileProc.stdout); -} +//Future copyBinary(String srcBin, File dst) async { +// await dst.create(recursive: true); +// final src = await rootBundle.load("assets/bin/$srcBin"); +// await dst.writeAsBytes(src.buffer.asUint8List(src.offsetInBytes, src.lengthInBytes)); +// print(src.lengthInBytes); +// +// final chmodProc = await processManager.run(['chmod', '+x', dst.path], runInShell: true); +// print(chmodProc.stdout); +// print(chmodProc.stderr); +// +// final fileProc = await processManager.run(['ls', '-la', dst.path]); +// print(fileProc.stdout); +//} diff --git a/qb-mobile/macos/Flutter/GeneratedPluginRegistrant.swift b/qb-mobile/macos/Flutter/GeneratedPluginRegistrant.swift index e777c67..80159e7 100644 --- a/qb-mobile/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/qb-mobile/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,8 +5,10 @@ import FlutterMacOS import Foundation +import device_info_plus import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) } diff --git a/qb-mobile/pubspec.lock b/qb-mobile/pubspec.lock index 9aeee07..53d35f9 100644 --- a/qb-mobile/pubspec.lock +++ b/qb-mobile/pubspec.lock @@ -49,6 +49,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 + url: "https://pub.dev" + source: hosted + version: "10.1.2" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + url: "https://pub.dev" + source: hosted + version: "7.0.1" fake_async: dependency: transitive description: @@ -123,6 +139,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" leak_tracker: dependency: transitive description: @@ -328,6 +349,30 @@ packages: url: "https://pub.dev" source: hosted version: "14.2.4" + web: + dependency: transitive + description: + name: web + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + win32: + dependency: transitive + description: + name: win32 + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" + url: "https://pub.dev" + source: hosted + version: "5.5.4" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6" + url: "https://pub.dev" + source: hosted + version: "1.1.4" xdg_directories: dependency: transitive description: diff --git a/qb-mobile/pubspec.yaml b/qb-mobile/pubspec.yaml index 678e9fa..33cce80 100644 --- a/qb-mobile/pubspec.yaml +++ b/qb-mobile/pubspec.yaml @@ -38,6 +38,7 @@ dependencies: cupertino_icons: ^1.0.8 process: ^5.0.2 path_provider: ^2.1.4 + device_info_plus: ^10.1.2 dev_dependencies: flutter_test: @@ -61,9 +62,6 @@ flutter: # the material Icons class. uses-material-design: true - assets: - - assets/bin/ - # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg