【问题标题】:Oracle JET: Getting error while launching ojet hybrid app for androidOracle JET:为 android 启动 ojet 混合应用程序时出错
【发布时间】:2020-08-26 06:06:02
【问题描述】:

当我们启动一个简单的应用程序时,Android 模拟器显示错误,请参阅随附的屏幕截图。 它在 iOS 上按预期工作。

我已经尝试了所有的默认模板导航栏、导航抽屉和空白。

screenshot

这是一个直接来自入门页面的应用程序,没有对模板代码进行任何修改。

Last login: Wed Aug 26 11:02:18 on ttys000

~                                                                              
▶ cd Desktop 

~/Desktop                                                                      
▶ ojet create myapp --template= navbar:hybrid

~/Desktop                                                                      
▶ cd myapp 

~/Desktop/myapp                                                                
▶ ojet add hybrid
? Please choose the platforms you want to install Android, iOS
Adding platform: android
Using cordova-fetch for cordova-android@^9.0.0


Adding android project...


Creating Cordova project for the Android platform:

    Path: platforms/android
    Package: org.oraclejet.myapp
    Name: myapp
    Activity: MainActivity
    Android target: android-29


Subproject Path: CordovaLib

Subproject Path: app

Android project created with cordova-android@9.0.0

Discovered plugin "cordova-plugin-whitelist". Adding it to the project


Installing "cordova-plugin-whitelist" for android

Adding cordova-plugin-whitelist to package.json


Adding platform: ios
Using cordova-fetch for cordova-ios@^6.1.0


Adding ios project...


Creating Cordova project for the iOS platform:

    Path: platforms/ios
    Package: org.oraclejet.myapp
    Name: myapp

iOS project created with cordova-ios@6.1.0


Installing "cordova-plugin-whitelist" for ios

Adding platform: browser
Using cordova-fetch for cordova-browser@^6.0.0


Adding browser project...


Creating Cordova project for cordova-browser:

    Path: /Users/hellonuh/Desktop/myapp/hybrid/platforms/browser
    Name: myapp

Installing "cordova-plugin-whitelist" for browser

6.0.0

Add hybrid finished.

~/Desktop/myapp                                                                
▶ ojet serve android                         
Build: true
BuildType: dev
Destination: emulator
Destination target: undefined
Livereload: true
Livereload port: 35729
Platform: android
Theme: redwood
Theme platform: android
Theme version: 9.1.0
Building app.
Cleaning staging path.
Running before_build hook.
Copy files to staging directory.
Copy finished.
Copy library files to staging directory.
Copy finished.
Copy reference components to staging directory.
Copy finished.
Copy local web components
Copy local web components skipped
Optimizing svg into SVG sprites.
Svg optimization task finished.
Compiling sass...
Sass compile finished.
Task index.html cdn bundle injection finished.
Running theme copy task.
Theme copy task finished.
Running theme injection task.
Task index.html theme path injection finished.
Injecting index.html with cordova script.
Running injection tasks.
Task main.js paths injection finished.
runAllComponentHooks 
Running after_build hook.
Running before_serve hook.
Executing: cordova clean android
Checking Java JDK and Android SDK versions

ANDROID_SDK_ROOT=undefined (recommended setting)
ANDROID_HOME=undefined (DEPRECATED)

Using Android SDK: /Users/hellonuh/Library/Android/sdk

> Task :wrapper


BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed


Subproject Path: CordovaLib


Subproject Path: app


> Task :clean UP-TO-DATE

> Task :app:clean UP-TO-DATE
> Task :CordovaLib:clean
 UP-TO-DATE


BUILD SUCCESSFUL
 in 1s

3 actionable tasks: 3 up-to-date

child process exited with code: 0
Executing: cordova serve 
Plugin 'cordova-plugin-wkwebview-file-xhr' found in config.xml... Migrating it to package.json


Plugin 'cordova-plugin-wkwebview-engine' found in config.xml... Migrating it to package.json


Discovered plugin "cordova-plugin-wkwebview-file-xhr". Adding it to the project


Installing "cordova-plugin-wkwebview-file-xhr" for android


Installing "cordova-plugin-wkwebview-engine" for android


Failed to install 'cordova-plugin-wkwebview-engine': Error: ENOENT: no such file or directory, open '/Users/hellonuh/Desktop/myapp/hybrid/platforms/android/app/src/main/assets/www/cordova_plugins.js'
    at Object.openSync (fs.js:462:3)
    at Object.writeFileSync (fs.js:1362:35)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/cordova-common/src/PluginManager.js:132:20
    at _fulfilled (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:854:54)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:883:30
    at Promise.promise.promiseDispatch (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:816:13)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:877:14
    at runSingle (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:137:13)
    at flush (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:125:13)
    at processTicksAndRejections (internal/process/task_queues.js:79:11)


Failed to install 'cordova-plugin-wkwebview-file-xhr': Error: ENOENT: no such file or directory, open '/Users/hellonuh/Desktop/myapp/hybrid/platforms/android/app/src/main/assets/www/cordova_plugins.js'
    at Object.openSync (fs.js:462:3)
    at Object.writeFileSync (fs.js:1362:35)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/cordova-common/src/PluginManager.js:132:20
    at _fulfilled (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:854:54)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:883:30
    at Promise.promise.promiseDispatch (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:816:13)
    at /Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:877:14
    at runSingle (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:137:13)
    at flush (/Users/hellonuh/Desktop/myapp/hybrid/node_modules/q/q.js:125:13)
    at processTicksAndRejections (internal/process/task_queues.js:79:11)


Failed to restore plugin "cordova-plugin-wkwebview-file-xhr". You might need to try adding it again. Error: Error: ENOENT: no such file or directory, open '/Users/hellonuh/Desktop/myapp/hybrid/platforms/android/app/src/main/assets/www/cordova_plugins.js'


Static file server running on: http://localhost:8000 (CTRL + C to shut down)
Executing: cordova run android --emulator --debug


Checking Java JDK and Android SDK versions

ANDROID_SDK_ROOT=undefined (recommended setting)
ANDROID_HOME=undefined (DEPRECATED)

Using Android SDK: /Users/hellonuh/Library/Android/sdk

Subproject Path: CordovaLib


Subproject Path: app

> Task :app:preBuild UP-TO-DATE

> Task :app:preDebugBuild UP-TO-DATE

> Task :CordovaLib:preBuild UP-TO-DATE


> Task :CordovaLib:preDebugBuild
 UP-TO-DATE

> Task :CordovaLib:compileDebugAidl NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :CordovaLib:packageDebugRenderscript
 NO-SOURCE

> Task :app:compileDebugRenderscript NO-SOURCE

> Task :app:generateDebugBuildConfig

> Task :app:generateDebugResValues
> Task :app:generateDebugResources


> Task :CordovaLib:compileDebugRenderscript

> Task :CordovaLib:generateDebugResValues
> Task :CordovaLib:generateDebugResources
> Task :CordovaLib:packageDebugResources

> Task :app:createDebugCompatibleScreenManifests

> Task :app:extractDeepLinksDebug
> Task :CordovaLib:extractDeepLinksDebug
> Task :app:javaPreCompileDebug

> Task :CordovaLib:compileDebugLibraryResources


> Task :CordovaLib:generateDebugBuildConfig

> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets
 UP-TO-DATE
> Task :CordovaLib:mergeDebugShaders
> Task :CordovaLib:compileDebugShaders NO-SOURCE
> Task :CordovaLib:generateDebugAssets
 UP-TO-DATE
> Task :CordovaLib:packageDebugAssets

> Task :app:mergeDebugAssets

> Task :app:processDebugJavaRes NO-SOURCE
> Task :CordovaLib:processDebugJavaRes NO-SOURCE

> Task :CordovaLib:bundleLibResDebug NO-SOURCE

> Task :app:checkDebugDuplicateClasses
> Task :app:desugarDebugFileDependencies
> Task :app:mergeDebugJavaResource
> Task :app:mergeDebugJniLibFolders

> Task :CordovaLib:mergeDebugJniLibFolders
> Task :app:validateSigningDebug

> Task :app:mergeExtDexDebug

> Task :CordovaLib:mergeDebugNativeLibs

> Task :CordovaLib:stripDebugDebugSymbols
 NO-SOURCE

> Task :CordovaLib:copyDebugJniLibsProjectOnly

> Task :CordovaLib:parseDebugLocalResources


> Task :CordovaLib:javaPreCompileDebug

> Task :CordovaLib:processDebugManifest

> Task :app:processDebugManifest
> Task :app:mergeDebugResources
> Task :CordovaLib:generateDebugRFile

> Task :app:processDebugResources


> Task :CordovaLib:compileDebugJavaWithJavac
> Task :app:mergeDebugNativeLibs
> Task :app:stripDebugDebugSymbols NO-SOURCE
> Task :CordovaLib:bundleLibCompileToJarDebug

> Task :app:compileDebugJavaWithJavac

> Task :app:compileDebugSources
> Task :CordovaLib:bundleLibRuntimeToJarDebug

> Task :app:dexBuilderDebug

> Task :app:mergeProjectDexDebug

> Task :app:mergeLibDexDebug


> Task :app:packageDebug

> Task :app:assembleDebug
> Task :app:cdvBuildDebug



Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 6s

40 actionable tasks: 40 executed

Built the following apk(s): 
    /Users/hellonuh/Desktop/myapp/hybrid/platforms/android/app/build/outputs/apk/debug/app-debug.apk


Checking Java JDK and Android SDK versions

ANDROID_SDK_ROOT=/Users/hellonuh/Library/Android/sdk (recommended setting)
ANDROID_HOME=undefined (DEPRECATED)

Using Android SDK: /Users/hellonuh/Library/Android/sdk

Using apk: /Users/hellonuh/Desktop/myapp/hybrid/platforms/android/app/build/outputs/apk/debug/app-debug.apk

Package name: org.oraclejet.myapp

INSTALL SUCCESS


LAUNCH SUCCESS
Starting watcher.
Running after_serve hook.
(node:3931) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'liveReloadServer' of undefined
    at /Users/hellonuh/Desktop/myapp/node_modules/@oracle/oraclejet-tooling/lib/serve/watch.js:65:28
    at new Promise (<anonymous>)
    at _startLiveReloadServer (/Users/hellonuh/Desktop/myapp/node_modules/@oracle/oraclejet-tooling/lib/serve/watch.js:64:10)
    at /Users/hellonuh/Desktop/myapp/node_modules/@oracle/oraclejet-tooling/lib/serve/watch.js:40:7
    at new Promise (<anonymous>)
    at module.exports (/Users/hellonuh/Desktop/myapp/node_modules/@oracle/oraclejet-tooling/lib/serve/watch.js:38:10)
    at /Users/hellonuh/Desktop/myapp/node_modules/@oracle/oraclejet-tooling/lib/serveHybrid.js:42:9
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:3931) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:3931) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


child process exited with code: 0
^C

~/Desktop/myapp                                                               ⍉
▶ ojet serve ios                             
^C

~/Desktop/myapp                                                               ⍉
▶ 

【问题讨论】:

标签: oracle-jet


【解决方案1】:

无需为您的应用添加额外的插件。 您只需将此行添加到您的 AndroidManifest.xml 文件中即可。 这应该只在开发过程中需要,因为一旦您使用 --release 发布应用程序,它将使用 https 而不会使用明文。

标签内,添加

AndroidManifest.xml 文件默认位于

/hybrid/platforms/android/app/src/main

【讨论】:

    【解决方案2】:

    以下解决方案对我有用

    ojet add plugins cordova-plugin-cleartext
    ojet build android
    ojet serve android  
    

    【讨论】:

      【解决方案3】:

      如果您正在阅读本文并且上述解决方案对您不起作用,您可以将这项工作应用到对我有用的范围内,请访问:

      /node_modules/@oracle/oraclejet-tooling/lib

      在 JS 文件的那个文件夹中:serveHybrid.js 搜索:(在我的例子中是第 42 行):

      if (serveOptions.livereload) {
          serveWatch(serveOptions.watch, serveOptions.livereloadPort);
      

      添加为serveWatch的参数,serveOptions:

      serveWatch(serveOptions.watch, serveOptions.livereloadPort, serveOptions);
      

      这对我很有用,可以解决 liveReload 问题。

      问候。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多