編輯:關於android開發
android 項目交互 與 sdk增加指南: (完整版)
通常在處理u3d與android natvice對接時,有兩種方案:
. U3D 項目交互部分方案:
a. 使用u3d帶有jni與使用jar方案直接處理,原理還是在u3d直接打包apk,其實處理過程是把相關工程的目錄構建好,在u3d內進行打包完成的c# 與 java進行交互,底層的ndk部分完全忽略掉了,直接用u3d提供的jni接口交互jar中的class地址即可;
b. 傳統的方式,導出eclipse android工程采用ndk方式jni通信;
android 的生命周期介紹:
.制作sdk native思路: 在交互的activity中跳轉到新的activity來進行顯示部分;
a方案配置指南:
1.Android創建工程指南
至少配置:(否則可能被坑)
.Minimum Required SDK: API 14 Android 4.0
.Target SDK: API 19 Android 4.4
.Compile With: API 19 Android 5.1.1
Theme: ... ...
Activity Name: ... ...
完成項目創建;
2. 項目結構:
.src: 原文件模塊, 一定要追加一個包名;
.libs: 與unity對應要增加一個sdk的類庫包;
.res/laytou: 布局管理模塊有需求就添加;
.AndroidManifest.xml: 增加xml android項目布局器;
3. 尋找unity3d支持的libs庫文件class.jar:
在u3d的安裝目錄下
../Contents/PlaybackEngines/AndroidPlayer/release/bin/classes.jar
../Contents/PlaybackEngines/AndroidPlayer/development/bin/classes.jar
拷貝到AndroidPlugin下的libs目錄下.
進行引用一次:
建議使用release下的jar交互庫;
4. 編輯要測試的布局文件:
.res/layout下的布局文件隨便寫,根據android native的構建原則來搞;
5. 回到src工程文件來實現部分代碼:
.修改MainActivity.java:(這個文件用來跟u3d進行交互,所以不要實現 setContentView方法)
刪除 setContentView(R.layout.activity_main);
刪除 onCreateOptionsMenu(Menu menu);
刪除 onOptionsItemSelected(MenuItem item);
增加: 需要交互的方法 (c#(u3d) / java);
public void StartActivity1(String name) { // u3d call android
// // TODO Auto-generated method stub
// Intent intent = new Intent(mContext,OpenActivity1.class);
// intent.putExtra("name", name);
// mActivity.startActivity(intent);
Log.e("U3D: ", "StartActivity1: " + name);
}
public void StartActivity2(String name) //
{
UnityPlayer.UnitySendMessage("Main Camera","messgae","android call u3d sucess!!!" + name);
}
public void StartActivity3(String name) { // native 跳轉 sdk等
// TODO Auto-generated method stub
Intent intent = new Intent(mContext,TestActivity0.class);
intent.putExtra("name", name);
mActivity.startActivity(intent);
}
補: 如果調試中可以使用Activity
u3d接入需要修改:
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {//UnityPlayerActivity
// 修改後要重新進入eclipse clean and build;
6. 開始打包bin下 class目錄 :
.控制台打開進入當前android工程的 bin目錄下:
.執行java命令行: jar -cvf class.jar *;
.打包出來的class.jar隨意改名;
7.構建AndroidManifest文件
.創建activity 磨垮
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:name=".OpenActivity1">
增加權限文件:
. 創建初始狀態android部分構建完成;
8. 進入unity3d項目設置部分;
. 新建u3d工程;
. 創建Plugins 文件夾, 創建Android文件夾 , 創建bin 文件夾, 創建 libs文件夾, 創建 res文件夾
. 拷貝AndroidManifest 到 Android;
. 拷貝生成好的jar文件到 bin;
. 拷貝第三方庫到 libs;
. 拷貝當前工程下的res內容到 res內,注意檢查layout;
9. 制作相關代碼:
void Start () {
#if UNITY_EDITOR
#elif UNITY_IPHONE
#elif UNITY_ANDROID
AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
m_activity = jc.GetStatic ("currentActivity");
#endif
}
void OnGUI(){
//call hello world
if(GUI.Button(new Rect(50,50,200,40),"Open Activity download")){
m_activity.Call("StartActivity1","Unity中調出android的方法了");
}
//call hello world
if(GUI.Button(new Rect(50,250,200,40),"Open Activity N2")){
m_activity.Call("StartActivity2","Unity中調出android的方法了222");
}
}
將腳本掛入Main Camera對象上;
10. U3D BuildSetting:
11. 打包後生成apk 文件使用;
12. 搭建tomcat web 服務器:
Mac OS:http://blog.csdn.net/kaitiren/article/details/44871181 安裝;
擴展部分: (跳轉一個activity來實現布局或者sdk的添加部分)
1. 回到android項目中,創建相關代碼過程:
Android 增加native 測試類OpenActivity1.java:
package com.example.androidplugin;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class OpenActivity1 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView)this.findViewById(R.id.textView1);
text.setText(this.getIntent().getStringExtra("name"));
Button close = (Button)this.findViewById(R.id.button0);
close.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
OpenActivity1.this.finish();
}
});
}
}
MainActivity.java 中:
public Context mContext = null;//增加
public Activity mActivity = null;//增加
protected void onCreate(Bundle savedInstanceState) {// 修改
super.onCreate(savedInstanceState);
mContext = this;//增加
mActivity = this;//增加
// setContentView(R.layout.activity_main);
}
public void StartActivity3(String name) // android call unity
{
Intent intent = new Intent(mContext,OpenActivity1.class);
intent.putExtra("name", name);
mActivity.startActivity(intent);
}
xml 配置:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ITFFuture.testua.MainActivity"
tools:ignore="MergeRootFrame" >
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/textView0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="18sp"
android:background="#00FF00"
android:text="測試Unity和Android之間額通訊"
android:gravity="center_vertical|center_horizontal" />
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:background="#0000FF"
android:text="大家好,我是安卓的OpenActivity1"
android:gravity="center_vertical|center_horizontal" />
Linux常用命令-50:crontab命令http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html前一天
活動的生命周期(三):實例上機課,生命周期上機 讓我們再來回顧一下上節課中分享的7個生命周期;分別是:onCreate()、onSar
Android開發學習——Android項目的目錄結構,android項目Android項目的目錄結構: 資源文件夾: 清單配置文件: An
Android App發布到應用市場的流程 AndroidApp上架所需文件 上架准備 App文件: 1.安裝包 2.應用商標:圖片格式PNG,大小512*512,小於8