open-native icon indicating copy to clipboard operation
open-native copied to clipboard

Error to ns run android

Open simensBat opened this issue 1 year ago • 2 comments

When I try to set up Open Native for a nativescript vue project, errors occur when I launch Android. It seems I have done everything according to the documentation.

Note: Recompile with -Xlint:deprecation for details.
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:33: error: cannot find symbol
  public static Packages packages = new Packages();
                ^
  symbol:   class Packages
  location: class Bridge
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:33: error: cannot find symbol
  public static Packages packages = new Packages();
                                        ^
  symbol:   class Packages
  location: class Bridge
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:42: error: cannot find symbol
    Packages.init();
    ^
  symbol:   variable Packages
  location: class Bridge
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:44: error: package Packages does not exist
      for (String module: Packages.moduleClasses.keySet()) {
                                  ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:61: error: cannot find symbol
      for (ReactPackage pkg : Packages.list) {
                              ^
  symbol:   variable Packages
  location: class Bridge
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:83: error: cannot find symbol
    for (ReactPackage pkg : Packages.list) {
                            ^
  symbol:   variable Packages
  location: class Bridge
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:101: error: package Packages does not exist
      Class clazz = Packages.moduleClasses.get(name);
                            ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:170: error: package Packages does not exist
    return Packages.modulePackageMap.keySet();
                   ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:174: error: package Packages does not exist
    return Packages.moduleClasses.get(name) != null || Packages.modulePackageMap.get(name) != null;
                   ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:174: error: package Packages does not exist
    return Packages.moduleClasses.get(name) != null || Packages.modulePackageMap.get(name) != null;
                                                               ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:194: error: package Packages does not exist
    Class moduleClass = Packages.moduleClasses.get(name);
                                ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:199: error: package Packages does not exist
      String modulePackageName = Packages.modulePackageMap.get(name);
                                         ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:210: error: package Packages does not exist
    return !Packages.moduleClasses.containsValue(clazz);
                    ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:216: error: package Packages does not exist
      if (!Packages.moduleClasses.containsValue(moduleClass)) {
                   ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:238: error: package Packages does not exist
            if (Packages.moduleClasses.containsValue(moduleClass)) {
                        ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:239: error: package Packages does not exist
              for (java.util.Map.Entry<String, Class> keyValuePair: Packages.moduleClasses.entrySet()) {
                                                                            ^
/Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java:258: error: package Packages does not exist
          String pkgName = Packages.modulePackageMap.get(name);
                                   ^
Note: /Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/semyonnemtyrev/projects/www-mobile-app/node_modules/@open-native/core/react-android/bridge/src/main/java/com/bridge/Bridge.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
17 errors

My package.json.

{

  "dependencies": {
    "@nativescript-use/vue": "^0.0.44",
    "@nativescript/core": "~8.8.2",
    "@nativescript/firebase-analytics": "^3.3.2",
    "@nativescript/firebase-core": "^3.3.2",
    "@nativescript/firebase-messaging": "^3.3.2",
    "@nativescript/local-notifications": "^6.2.1",
    "@open-native/core": "^2.0.0",
    "nativescript-vue": "^3.0.0-rc.2",
    "nativescript-webview-interface": "^1.4.5",
    "nativescript-yandex-appmetrica": "https://github.com/dmitribd/nativescript-yandex-appmetrica"
  },
  "devDependencies": {
    "@nativescript/android": "^8.8.2",
    "@nativescript/ios": "^8.8.2",
    "@nativescript/preview-cli": "1.0.13",
    "@nativescript/types": "^8.8.0",
    "@nativescript/webpack": "~5.0.0",
    "@types/node": "^22.5.5",
    "dotenv": "^16.4.5",
    "typescript": "^5.4.5"
  }
}

app.gradle

// You can add your native dependencies here
dependencies {
//  implementation 'androidx.multidex:multidex:2.0.1'
//
implementation 'androidx.core:core-splashscreen:1.0.1'

}


android {
  compileSdkVersion 34
  buildToolsVersion "34"
  // ndkVersion ""

  defaultConfig {
    minSdkVersion 23
    targetSdkVersion 34

    // Version Information
    versionCode 1
    versionName "1.0.0"

    generatedDensities = []
  }

  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

before-plugins.gradle

// this configurations is loaded before building plugins, as well as before building
// the app - this is where you can apply global settings and overrides

project.ext {
  // androidXAppCompat = "1.4.1"
  // androidXExifInterface = "1.3.3"
  // androidXFragment = "1.4.1"
  // androidXMaterial = "1.5.0"
  // androidXMultidex = "2.0.1"
  // androidXTransition = "1.4.1"
  // androidXViewPager = "1.0.0"

  // useKotlin = true
  // kotlinVersion = "1.6.0"
  // okHttpVersion = "4.9.2"
}

apply from: new File(["node", "--print", "require.resolve('@open-native/core/package.json')"].execute(null, rootDir).text.trim(), "../scripts/open-native.gradle");

settings.gradle

apply from: new File(["node", "--print", "require.resolve('@open-native/core/package.json')"].execute(null, rootDir).text.trim(), "../scripts/native_modules.gradle");

simensBat avatar Oct 23 '24 15:10 simensBat

+1

baosj627 avatar Nov 01 '24 21:11 baosj627

@baosj627 Looks like I found out what my problem was. When running the ns clean command, I configured it to clean the hooks folder, which is needed for open-native to work. Try removing this folder from pathsToClean in nativescript.config.ts and reinstalling @open-native/core

I used these settings on a bare Vue 3 project and was able to use the third party module react-native.

{
  "name": "open-native",
  "main": "app/app.ts",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "@nativescript/core": "^8.8.6",
    "@open-native/core": "^2.0.4",
    "nativescript-vue": "3.0.0-rc.2",
    "react-native-device-info": "^14.0.1"
  },
  "devDependencies": {
    "@nativescript/android": "^8.4.0",
    "@nativescript/ios": "^8.8.2",
    "@nativescript/preview-cli": "1.0.13",
    "@nativescript/types": "^8.8.0",
    "@nativescript/webpack": "~5.0.0",
    "@types/node": "^22.5.5",
    "glob": "^11.0.0",
    "typescript": "^5.4.5"
  }
}

import { NativeScriptConfig } from "@nativescript/core";

export default {
  id: "org.nativescript.openNative",
  appPath: "app",
  appResourcesPath: "App_Resources",
  cli: {
    pathsToClean: ["platforms"],
  },
  android: {
    v8Flags: "--expose_gc",
    markingMode: "none",
  },
} as NativeScriptConfig;

Open-native hooks asked me to also install a glob dependency for development.

simensBat avatar Dec 04 '24 11:12 simensBat