導航:首頁 > 操作系統 > 如何能接到安卓項目

如何能接到安卓項目

發布時間:2023-06-28 07:47:41

① unity項目如何導入android項目中成為安卓項目中的一部分

1.Android端代碼可以在Eclipse中開發(AndroidStudio沒有試,應該也可以)

2.Unity3D端代碼要在Unity中開發

3.Android和Unity3D端,兩邊都需要加入一些代碼從而可以使之關聯交互。

4.將Android端代碼編譯成jar文件以插件形式放入到Unity端中

5.在Unity中將整個項目Build成apk文件,然後安裝到手機或模擬器里運行

本文主要講解1,2,3。對於4,5建議大家去看雨松MOMO的Unity博客的第17篇和第18篇。

UnityPlay:

在編寫Android端和Unity3d端代碼前,有必要先了解一下可以使兩部分交互的類UnityPlay。

個人理解UnityPlay是個Unity提供給外部交互的一個介面類。

為什麼是「個人理解」?這我不得不爆粗口了,TMD官網根本就沒有相關的API和文檔(如果大家有誰找到一定給我來一份,就當我罵自己了)。

在關聯Android時,想拿到UnityPlay以及相關類的jar包可以從下面的地址找到:Unity安裝路徑\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夾下有一個classes.jar的jar文件,它就是我們想要的。

而在bin同目錄下有一個src文件,點擊到最後有3個類,分別是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前兩個打開個後只有一行代碼,說的是UnityPlayerActivity和UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity。而打開UnityPlayerNativeActivity中居然有代碼,而且我估計這應該是UnityPlayerNativeActivity的源碼

由於關於UnityPlay的資料我只找到這么一個,所以我把UnityPlayerNativeActivity中的代碼都貼出來,如果我註解有不對的地方希望大家指正。

/**
* UnityPlayerActivity,UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity
* 而UnityPlayerNativeActivity繼承自NativeActivity
* 在該類里定義了一些和ANDROID生命周期相同的回調方法,留給自定義的Activity子類重寫。
*/
public class UnityPlayerNativeActivity extends NativeActivity
{
//UnityPlayer的引用,並且我們不能改變這個引用變數的名字,它被native code所引用
protected UnityPlayer mUnityPlayer;

protected void onCreate (Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
// 設置顯示窗口參數
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);

// 創建一個UnityPlayer對象,並賦值給全局的引用變數
mUnityPlayer = new UnityPlayer(this);
//為UnityPlayer設置一些參數
if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
// UnityPlayer.init()方法需要在將view附加到layout之前調用。它將會調用native code
mUnityPlayer.init(glesMode, trueColor8888);

// 從UnityPlayer中獲取到Unity的View視圖
View playerView = mUnityPlayer.getView();
// 將Unity視圖載入到根視圖上
setContentView(playerView);
// 使Unity視圖獲取焦點
playerView.requestFocus();
}
protected void onDestroy ()
{
// 當Activity結束的時候調用UnityPlayer.quit()方法,它會卸載之前調用的native code
mUnityPlayer.quit();
super.onDestroy();
}

// 下面幾個方法都是ANDROID相關回調方法,確保在ANDROID執行相應方法時UnityPlayer也需調用相應方法
protected void onPause()
{
super.onPause();
mUnityPlayer.pause();
}
protected void onResume()
{
super.onResume();
mUnityPlayer.resume();
}

public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
return super.dispatchKeyEvent(event);
}
}
看完這個類後就知道了為什麼在自定義的Activity中繼承了UnityPlayerActivity等類以後,只要重寫了onCreate並調用super.onCreate()方法後不需要任何其他的代碼就會自動的顯示出Unity3D的視圖。因為初始化Unity視圖的代碼都在UnityPlayerNativeActivity父類中實現了。

ANDROID端代碼:

在寫ANDROID代碼的時候,一定要導入Unity3D提供給我們的jar包,jar包的位置我在上面說了。引入jar包加入到buildpath中這些最基本的我就不多說了。

要想和Unity交互,我們就不能繼承ANDROID提供給我們的Activity,我們需要繼承剛才jar包中引入的Unity提供的Activity類,一共有這么3個:

UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具體區別不知道,因為沒有文檔,沒有API,沒有源碼(這里再次鄙視一下)。剛才我們看過UnityPlayerNativeActivity的代碼(雖然很短,但我覺得這個就是源碼),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子類,而且最終父類為NativeActivity。所以我們繼承Unity提供的最外層的子類是最好的選擇,我這里選擇的是UnityPlayerActivity,因為名字最簡單,覺得該封裝的都應該封裝好了。

public class MainActivity extends UnityPlayerActivity {

private Button topButton;
private Button bottomButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 設置test為我們的根布局
setContentView(R.layout.test);

// 通過剛才的源碼分析,知道mUnityPlayer為一個全局的引用變數,而且已經在父類中設置好了,所以直接拿來用就可以了
View playerView = mUnityPlayer.getView();
// 將Unity的視圖添加到我們為其准備的父容器中
LinearLayout ll = (LinearLayout) findViewById(R.id.unityViewLyaout);
ll.addView(playerView);

// 上面的button設置監聽器
topButton = (Button) findViewById(R.id.topButton);
topButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//發送消息給Unity端,該函數第一個參數為接受消息的類對象,第二個該類對象用接受消息的方法,第三個參數為傳遞的消息
//所以下面的意思就為:調用Main Camera下面的Previous方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Previous","");
}
});

// 為下面的button設置監聽器
bottomButton = (Button) findViewById(R.id.bottomBtn);
bottomButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//調用Main Camera下面的Next方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Next","");
}
});
}
}
最後看一下Android端的布局文件,布局很簡單,上下各有一個button按鈕,兩個按鈕中間是Unity的視圖。

② 怎麼用手機連接android

利用adb來連接手機, 有兩種方式: 1, wifi, 2, usb.

前提條件: 下載adb, 最好把對應的文件置於cmd.exe同目錄下。

1. 通過wifi, 利用adb來連接手機。
在pc的cmd中輸入命令
adb connect 192.168.1.100
其中adb就是手機的ip. 如果連接成功, 就可以進入android的shell了。
我自己在操作過程中, pc能ping通過手機, 但是adb連接手機, 出現了一點點問題, 提示unable to connect to 192.168.1.100:5555, 這個是什麼原因呢? 原來手機的默認adb服務是沒有打開的, 否則, 別人adb能隨便連, 那豈不是很不安全么? 所以, 我們要想辦法把手機上的adb服務打開。 怎麼搞呢? 首先要在手機上下載一個android模擬器(當然, 如果你有, 就不用下載了), 然後切到root許可權, 並執行如下命令打開adb服務:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
然後adb就可
2. 通過usb, 利用adb來連接手機。
我把手機通過usb接上pc, 結果adb並沒有連接上手機, 於是下載了android驅動程序, 安裝了, 就好了。這樣, adb就連接上了手機, 開心啊。於是就可以利用adb shell進入手機的android系統了。

比較一下: 方法1的要求較高, 需要依賴於穩定的網路, 而且操作麻煩, 方法2就簡便多了。

③ 怎麼導入別人的android項目

方法如下:
1.去到要導入項目的目錄下把 .idea .gradle與build 三個文件夾,*.iml,local.properties刪除(*表示所有),經本人驗證紅框中的gradle文件夾不能刪除。
2.進入app文件夾同理把build,*.iml刪除。
3.打開已經run成功的項目的build.graid把classpath:這整句復制,去要導入的項目中打開build.graid進行替換。classpath 此處有一些項目用的雙引號,而有一些是用的單引號,不要更改將要導入的項目的原有符號規則。
4.打開gradlewrappergradle-wrapper.properties復制最後一句,去到要導入的項目進行替換。
5.改version 注意有一些項目的buildToolsVersion མ.0.3' 是用的雙引號,而有一些是用的單引號,不要更改將要導入的項目的原有符號規則,然後保存即可,前面的工作梁局已經做好了,接下來就是去導入了。
6.導入項目
選擇自己要導入的項目,這個時候一定點擊「Cancel」,因為這個就是在提示你你的gradle現在unable,取消以圓渣虛後就會讓你重新選擇你的gradle的路徑,現在選擇你的gradle所在文件目錄即可。
第五步:解決感嘆號
看到下面會出現一個提示說:Could not 這個時候我們只需要點擊右邊紅框紅的add就可以了。點擊Do Refactor,稍等一會,又出現了一個感嘆號。
最後一步:「Do Refactor」導入完成,不再有錯橘燃誤。
8.若出現解決Configuration 『compile』 is obsolete and has been replaced with implementation
改成implementation
1.把compile 改成implementation
2.把androidTestCompile改成androidTestImplementation
3.把testCompile改成testImplementation
如果還有警告,看下運行按鈕,可以運行了。

④ 如何搭建android開發環境_如何搭建一個Android開發環境

我的第一個Android程序

今天給大家分享一下我的第一個Android項目:helloword

首先我們開發Android程序需要一個開發環境,下面先分享一下環境搭建的方法

Android開發環境搭建非常簡單,google為我們提供了一套洞吵完整的開發工具包下載

點擊DownloadtheSDK就會出現下面的頁面,選擇同意以上條款,並根據自己的系統選擇對應的版本,我的電腦是32位的所以就選擇了32-bit的,然後點擊下面藍色的按鈕就可以開始下載啦~~

下載好了之後呢是一個510M的壓縮文件,選擇好目錄解桐茄壓縮之後能我們會得到

這三個東西,這里呢我們看到了我們熟悉的Eclipse文件夾了,沒錯,這個文件夾下呢就是我們的開發工具啦,但是不要著急,但開始之前呢,局顫察我們需要先配置一下我們的環境變數

將SDK下的platform-tools和tools兩個文件夾的完整路徑呢配置到我們的環境變數PATH中

我的系統是window7的,配置環境變數的方法呢:右擊我的電腦->屬性->高級設置->環境變數->雙擊Path將連個文件夾的路徑追加進去,注意中間要用分號隔開,點擊確定。

配置好所有的環境變數後,打開我們的Eclipse文件夾下的eclipse.exe,第一次打開會彈出一個對話框,設置我們的工作路徑,也就是我們保存項目的地方

經過載入之後呢,我們就看到操作界面了。

首先先創建一個Android的虛擬機,點擊window下的AndroidVirtualDevicesManager選項

就可以看到我們的Android虛擬機管理界面了

點擊new新建一個虛擬機

選擇好後點擊確定,一個虛擬機就創建好了,選擇我們創建好,選中我創建好的虛擬機,start

載入界面

完成後就能看到我們的虛擬機啦~經過漫長的啟動終於看到虛擬機界面了。

准備工作都做好了,下面開始創建一個Android項目啦,萬能的helloword,哈哈!

虛擬機最小化,進入Eclipse界面,菜單欄File->new->Androidapplicationproject,新建一個Android項目

接著會出現一個界面,選擇一些參數

接下來就是一路next然後finish,一個新的Android項目就建好了

接著在界面會看到Eclipse的界面了

右擊我們的項目,runas->選擇Androidapplication,就可以運行到我們的虛擬機上

閱讀全文

與如何能接到安卓項目相關的資料

熱點內容
php開發學習門戶 瀏覽:383
傳奇游戲伺服器怎麼設置 瀏覽:823
敲擊東西解壓完整版 瀏覽:401
刺絡學pdf 瀏覽:868
怎麼給手機文件夾設置封面 瀏覽:931
汽車保養app怎麼用 瀏覽:62
線程javalock 瀏覽:896
c語言編譯運行結果查看器 瀏覽:112
androidpx轉dip 瀏覽:841
西藏編譯局是什麼級別 瀏覽:1001
php提交代碼 瀏覽:597
如何用命令查找並刪除代碼塊 瀏覽:582
python初學路線圖 瀏覽:534
matlab遺傳演算法旅行商問題 瀏覽:304
將辦公軟體加入加密軟體的進程 瀏覽:724
聯想小新pro14編譯器 瀏覽:462
為什麼伺服器要關掉icmp協議 瀏覽:855
源碼編輯器如何設置難度 瀏覽:357
給pdf加目錄 瀏覽:476
加密軟體怎麼改安全問題 瀏覽:552