Unity3D and Android Studio Integration
Anyone know integrate Android with Unity Studio? (i will explain)
I created a simple scene in Unity (4.3.x on OSX Maverics) for testing. Has a 3D object and nothing else.
I do this in XCode using the Stackoverflow explanations here and i post my complete code here ( Touch a UIButton and show Unity on UIView or UIViewController ) to show it's really simple.
But now, I need to do the same on Android Studio (which I installed and I can export the project from Unity to Android)
The only thing I know is that the AndroidManifest.xml and the file is in "res/layout/(something).xml" files that are the first (read) and (displays) the layout on the screen when you create a project on Android Studio.
When you open the generated project from Unity, the only XML you have is AndroidManifest.
So I'm lost. Since the document of third part site (http://www.rbcafe.com/Softwares/Unity/Documentation/Manual/android-GettingStarted.html) only mentions the Unity Eclipse and a JAVA files that do not exist in the project, makes me more lost.
In Objective-C, you create your somethingDelegate.mm and .h and inserts "a line of code" and ready. In Android does not seem to be as simple as this official document (http://docs.unity3d.com/Manual/PluginsForAndroid.html ) says.
Someone already did this in the Android Studio and could help me?
Thanks in advance.
** Edited for bounty: **
Need to create 3 views:
1 - Main View with 2 buttons;
2 - One button go to a second View;
3 - Other button go to Unity View;
There must be a simple way to do this on Android as a studio made the link above.
Solution 1:
Setting up an Android project is really simple. The document you linked is outdated and you don't need to move any files at all.
Unity
- Goto
File -> Build Settings -> Android
and clickSwitch Platform
- Enable
Google Android Project
- Click
Export
and choose where you want the Android project to be
Android Studio
- Import or open the project you have just created with Unity
- Done :)
If you want to display the Unity engine inside a subactivity, I suggest you take a look at this answer.
If you're completely unfamiliar with Android development, you should start with a simple "Hello World" app without complicating things by adding Unity to the mix. Just follow some of the official Android guides.
Solution 2:
I integrated a Unity project to an Android application.
I had a simple activity with a button created using Android Studio.
On clicking this button the Unity scenes will start.
The android project exported from unity should like this:
It needed to be converted to Gradle project first.
For that:
- Open Android Studio -> choose import project -> select the unity project (Non-Gradle project) -> save project and close.
Now your unity project folder looks like this:
Now open your project and do the following to import the unity project in to your project:
- Click File -> New -> New Module -> Select "import Gradle Project" -> choose the unity gradle project folder you just created -> rename module name if prompted by checking the “import” checkbox in Android studio -> Click Finish
-
Verify in Settings.gradle file to see if the new module name is added in the include command:
include ':app', ':yournewmodulename’
-
Open build.gradle file of the new unity module from navigation window and rename the below line:
apply plugin: 'com.android.application'
to
apply plugin: 'com.android.library'
-
Remove the line from the defaultConfig section of the new unity module:
applicationId "com.xxx.xxx"
Open Manifest of this new unity module and comment the application tag (Do not remove the uses-sdk tag).Integrate the new unity module's Manifest with your project’s Manifest by moving necessary tags to our project’s Manifest (e.g. :Activity, uses-feature etc.).
-
Open build.gradle of your project and add below line in the dependencies section:
dependencies { … compile project(path: ':yournewmodulename') }
Now on button click you can call the Activity in the unity module from your activity as below:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.xxx.xxx.UnityPlayerActivity;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, UnityPlayerActivity.class);
startActivity(i);
}
});
}
}