대충 Google 버튼 누르면 Toast로 구글로그인중 뜸.


29b8c62ee0de31a962b6ccb404d5643772169d55358732870cd97d95d08fb962308a3092


대충 이렇게 build.gralde 설정해주고,

0c9cc216e9c73faf60ac98a518d60403231ec8cb7debaf4db9d6



plugins {
id 'com.android.library'
}

android {
compileSdkVersion 30

defaultConfig {
minSdkVersion 24
targetSdkVersion 30

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}

signingConfigs {
release {
storeFile file('I:/Android/KeyStore/dev-neckdoris.keystore')
storePassword '********'
keyAlias 'free'
keyPassword '********'
}
}

buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
jniDebuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.activity:activity:1.2.0-rc01'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.multidex:multidex:2.0.1'
implementation files('libs\\unity-classes.jar')

testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}




18b3d932fce234a777bac49415c52d2b79584da68f7260720c589b1f30526ddf58839a

Custom으로 만들어주어서,

package org.game.aarpluginunity.example;

import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Window;
import android.widget.FrameLayout;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.unity3d.player.UnityPlayer;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class UnityPlayerActivity extends AppCompatActivity {
protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code
private ActionBar actionBar;
private Toolbar toolbar;
private FrameLayout unityContainer;

// Override this in your custom UnityPlayerActivity to tweak the command line arguments passed to the Unity Android Player
// The command line arguments are passed as a string, separated by spaces
// UnityPlayerActivity calls this from 'onCreate'
// Supported: -force-gles20, -force-gles30, -force-gles31, -force-gles31aep, -force-gles32, -force-gles, -force-vulkan
// See https://docs.unity3d.com/Manual/CommandLineArguments.html
// @param cmdLine the current command line arguments, may be null
// @return the modified command line string or null
protected String updateUnityCommandLineArguments(String cmdLine)
{
return cmdLine;
}

//Bundle newBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);

String unity = "";

try {
unity = URLEncoder.encode("unity", "utf-8");
String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra(unity));
getIntent().putExtra(unity, cmdLine);
} catch(UnsupportedEncodingException e1) {
e1.printStackTrace();
}

mUnityPlayer = new UnityPlayer(this);
setContentView(mUnityPlayer);
mUnityPlayer.requestFocus();

//setContentView(R.layout.unity);
}

void mappingWidgets()
{
//toolbar = (Toolbar) findViewById(R.id.toolbar);
//unityContainer = (FrameLayout)findViewById(R.id.mainframe);
//FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
//unityContainer.addView(mUnityPlayer.getView(), 0, layoutParams);
//mUnityPlayer.requestFocus();

//int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
//decorView.setSystemUiVisibility(uiOptions);
}

void init() {
//setSupportActionBar(toolbar);
//actionBar=getSupportActionBar();
//if(actionBar != null)
// actionBar.setDisplayHomeAsUpEnabled(true);
//toolbar.setNavigationOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// finish();
// onDestroy();
// }
//});
//setTitle(getString(R.string.app_name));
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
//mUnityPlayer.newIntent(intent);
}

@Override
protected void onDestroy() {
mUnityPlayer.quit();
super.onDestroy();
}

@Override
protected void onPause() {
super.onPause();
mUnityPlayer.pause();
}

@Override
protected void onResume() {
super.onResume();
mUnityPlayer.resume();
}

@Override
protected void onStart() {
super.onStart();
//mUnityPlayer.start();
}

@Override
protected void onStop() {
super.onStop();
//mUnityPlayer.stop();
}

@Override
protected void onPostResume() {
super.onPostResume();
Log.d(URLEncoder("Ugly Hammer 2018"), URLEncoder("OnPostResume"));
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
Log.d(URLEncoder("Ugly Hammer 2018"), URLEncoder("OnPostCreate"));
}

public String URLEncoder(String st1) {
try {
URLEncoder.encode(st1, "utf-8");
} catch(UnsupportedEncodingException e1) {
e1.printStackTrace();
}
return st1;
}

@Override
public void onLowMemory() {
super.onLowMemory();
mUnityPlayer.lowMemory();
}

@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if(level == TRIM_MEMORY_RUNNING_CRITICAL) {
mUnityPlayer.lowMemory();;
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.injectEvent(event);
return super.dispatchKeyEvent(event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
finish();
onDestroy();
return true;
}
return mUnityPlayer.injectEvent(event);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return mUnityPlayer.injectEvent(event);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return mUnityPlayer.injectEvent(event);
}

@Override
public boolean onGenericMotionEvent(MotionEvent event) {
return mUnityPlayer.injectEvent(event);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//newBundle = savedInstanceState;
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//newBundle = outState;
}

//@Override
//public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//}
}


0c9cc216e9c73faf60f1dcb400d06a2d807c2d3fbc81249d282996be1ade


여기서 넘기는데 스마트폰에서 안 넘어감. 다음 씬으로

 다음씬이 없기는 한 것 같은데... 있긴 있는데 빈 씬인데 안 넘어가더라...


이거 1월 부터 고민중 작년부터 연구했고,