gree / unity-webview

zlib License
2.25k stars 687 forks source link

Unable to Create WebViewPlugin.Jar #500

Open sandeepsmartest opened 4 years ago

sandeepsmartest commented 4 years ago

I made some changes, basically i just added a log as shown below

 @JavascriptInterface
    public void call(final String message) {
                 Log.d("its just a log CWebViewPlugin", cm.message());
        call("CallFromJS", message);
    }

I was unable to create jar file. Please check the below log while im trying to execute "install.sh"

xxx-xxx:Android xxxx$ ./install.sh --debug
~/Downloads/unity-webview-master/plugins/Android ~/Downloads/unity-webview-master/plugins/Android

> Task :gradle_build:compileReleaseJavaWithJavac FAILED
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:7: error: cannot find symbol
    extends UnityPlayerActivity
            ^
  symbol: class UnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:9: error: method does not override or implement a method from a supertype
    @Override
    ^
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:11: error: cannot find symbol
        requestWindowFeature(1);
        ^
  symbol:   method requestWindowFeature(int)
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:12: error: cannot find symbol
        super.onCreate(bundle);
        ^
  symbol:   variable super
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:13: error: cannot find symbol
        getWindow().setFormat(2);
        ^
  symbol:   method getWindow()
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:14: error: cannot find symbol
        mUnityPlayer = new CUnityPlayer(this);
        ^
  symbol:   variable mUnityPlayer
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:14: error: incompatible types: CUnityPlayerActivity cannot be converted to ContextWrapper
        mUnityPlayer = new CUnityPlayer(this);
                                        ^
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:15: error: cannot find symbol
        setContentView(mUnityPlayer);
                       ^
  symbol:   variable mUnityPlayer
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CUnityPlayerActivity.java:16: error: cannot find symbol
        mUnityPlayer.requestFocus();
        ^
  symbol:   variable mUnityPlayer
  location: class CUnityPlayerActivity
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CWebViewPlugin.java:73: error: cannot find symbol
                 Log.d("Nsks CWebViewPlugin", cm.message());
                                              ^
  symbol:   variable cm
  location: class CWebViewPluginInterface
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CWebViewPlugin.java:73: error: cannot find symbol
                 Log.d("Nsks CWebViewPlugin", cm.message());
                 ^
  symbol:   variable Log
  location: class CWebViewPluginInterface
Note: /Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/src/main/java/net/gree/unitywebview/CWebViewPlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
11 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':gradle_build:compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
21 actionable tasks: 19 executed, 2 up-to-date
/Users/xxxx/Downloads/unity-webview-master/plugins/Android/gradle_build/build/intermediates/classes/release/net : no such file or directory
added manifest

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
~/Downloads/unity-webview-master/plugins/Android
xxxx-xxxx:Android xxxx$ 

Please point me in the right direction. Thank you

sandeepsmartest commented 4 years ago

Can you please explain how do i change the code inside CwebViewPlugin.java and generate jar file?Im using Mac.

sandeepsmartest commented 4 years ago

My install.sh after modification(unity path)

#!/bin/sh

# required command
JAR_CMD=`which jar`

# directories
CWD=`dirname $0`
CWD=`cd $CWD && pwd -P`

BUILD_DIR="${CWD}/gradle_build"
LIBS_DIR="${BUILD_DIR}/libs"
JAVA_DIR="${BUILD_DIR}/src/main/java"
BIN_DIR="${CWD}/bin"

# options
MODE="Release"
SCRIPTING_BACKEND="il2cpp"
UNITY="/Applications/Unity/Hub/Editor/2019.3.0f3"

for OPT in $*; do
  case $OPT in
    '--release' )
      MODE="Release";;
    '--develop' )
      MODE="Develop";;
    '--il2cpp' )
      SCRIPTING_BACKEND="il2cpp";;
    '--mono' )
      SCRIPTING_BACKEND="mono";;
    '--unity' )
      UNITY=$2
      shift 2
      ;;
  esac
  shift
done

UNITY_JAVA_LIB="${UNITY}/PlaybackEngines/AndroidPlayer/Variations/${SCRIPTING_BACKEND}/${MODE}/Classes/classes.jar"

# clean
rm -rf ${JAVA_DIR}/*
rm -rf ${LIB_DIR}
rm -f ${BUILD_DIR}/src/main/AndroidManifest.xml

pushd $CWD

# copy unity library
DEST_DIR='../../build/Packager/Assets/Plugins/Android'

mkdir -p ${LIBS_DIR}
mkdir -p ${BIN_DIR}
mkdir -p ${DEST_DIR}
mkdir -p ${JAVA_DIR}

cp ${UNITY_JAVA_LIB} ${LIBS_DIR}
cp -r src/net ${JAVA_DIR}
cp AndroidManifest.xml ${BUILD_DIR}/src/main

# build
./gradlew assembleRelease

if [ ${JAR_CMD} = "" ];then
  echo "jar command does not exist"
else
  jar cvf ${CWD}/bin/WebViewPlugin.jar -C ${BUILD_DIR}/build/intermediates/classes/release net
  cp -a ${BIN_DIR}/WebViewPlugin.jar ${DEST_DIR}
fi

./gradlew clean

popd # $BUILD_DIR

And my install.bat file

@echo off

rd /s /q bin
rd /s /q gradle_build\libs
rd /s /q gradle_build\src

mkdir bin
mkdir gradle_build\libs
mkdir gradle_build\src
mkdir gradle_build\src\main
mkdir gradle_build\src\main\java

copy /b "/Applications/Unity/Hub/Editor/2019.3.0f3/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar" gradle_build\libs >nul
xcopy /s /e src gradle_build\src\main\java >nul
copy /b AndroidManifest.xml gradle_build\src\main >nul

call gradlew.bat assembleRelease

jar cf bin\WebViewPlugin.jar -C gradle_build\build\intermediates\classes\release net

My unity path /Applications/Unity/Hub/Editor/2019.3.0f3

And this is my unity root structure(image) Please help.

Screenshot 2019-12-29 at 1 58 41 AM
KojiNakamaru commented 4 years ago

The steps to build WebView.jar can be found below:

https://github.com/gree/unity-webview/tree/d51d963d9b40d87cd29bf9d90bc625ad2dc27a6f#how-to-build-webviewpluginjar

Please note that you need to install Unity 5.6.1f1 regardless of which Unity version you actually use for your app. Unity 5.6.1f1 can be retrieved from https://unity3d.com/get-unity/download/archive .