Unity3d Application crashes when use Android plugin

1.2k Views Asked by At

I am following this tutorial to make a step counter and it works well as an android project but when I make the android project a library and want to use it in unity3d, it is crashing and giving me an error class not found: exception My unity code is as follows:

void Start () 
{
    #if UNITY_ANDROID
    AndroidJNI.AttachCurrentThread();
    androidClass = new AndroidJavaClass("com.test.testapp.MainActivity");
    #endif
}
#if UNITY_ANDROID
public void checkMyIntOnJava(string message){
    if (message == "READY") {
        int myInt = androidClass.CallStatic<int>("getMyInt");
        guiText.text = "My Int: " + myInt;
    }
}

and my android code is as follows:

public class MainActivity extends UnityPlayerActivity
implements OnDataPointListener, GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener
{
public static void callbackToUnityMethod(int num, String gameObject,String methodName){
    _myInt = num;
    Log.e("GoogleFit", "in callbackToUnityMethod");
   UnityPlayer.UnitySendMessage(gameObject, methodName, "READY");
}
}

After making an android jar, I keep it in the plugin folder in unity3d. Did I miss anything?

My Android Manifest file is as following:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.xxx.testapp" android:versionCode="1" 
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" />
<application android:label="@string/app_name">
    <activity android:name="com.xxx.testapp.MainActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.xxx.testapp.UnityPlayerActivity"  
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:label="@string/app_name" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
</application>
</manifest>
1

There are 1 best solutions below

0
On

Here's the two things I would try.

First change the following line in you AndroidManifest.xml so that the package scoping matches on the android:name property.

<activity android:name="com.xxx.testapp.MainActivity"
         android:label="@string/app_name">

to

<activity android:name="com.test.testapp.MainActivity"
         android:label="@string/app_name">

The other potential problem is that your class isn't being compiled because it is missing concrete implementations of the abstract methods in the parents classes and interfaces. To fix that add these implementations to MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public void onConnected(Bundle bundle) {

}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

@Override
public void onDataPoint(DataPoint dataPoint) {

}