Unity與安卓互動心得

來源:互聯網
上載者:User

標籤:打包   and   start   代碼   gets   back   persist   tps   mat   

一   調用Android原生分享功能。

不需要網上說的在Android studio或者eclipse匯出jar包到unity然後調用。只需要正常建立一個cs檔案寫入以下代碼即可。

public void Share(string shareText, string imagePath, string url, string subject = "")    {#if UNITY_ANDROID        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));        AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");        AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + imagePath);        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);        intentObject.Call<AndroidJavaObject>("setType", "image/png");        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), shareText);        AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");        AndroidJavaObject jChooser = intentClass.CallStatic<AndroidJavaObject>("createChooser", intentObject, subject);        currentActivity.Call("startActivity", jChooser);#endif

 

其中這裡有一個分享,沒有特別的需求的話直接調用unity內建的功能。

string ScreenshotName = "screenshot.png";string screenShotPath = Application.persistentDataPath + "/" + ScreenshotName;Application.CaptureScreenshot(ScreenshotName);

 

預設情況下用這個方法得到的儲存在Application.persistentDataPath裡面,不同的平台具體的路徑不一樣。通過函數名也可以知道,這個路徑是可以持久儲存資料的路徑。我也用來儲存遊戲資料的xml檔案。

 

二  整合googleplaygame與fyber sdk的心得。這個是我最近做的。正常情況下把外掛程式全部匯入進去就可以了。但可能會出現一系列錯誤,如打包不成功,運行閃退等情況。這種情況的產生的原因都是類似的,其他sdk的問題也可以借鑒。

打包不成功的原因我遇到的主要有以下幾種情況:

 

1無法合并xml。(Unable to merge android manifests.)

原因:這是因為存在多個xml的檔案,這幾個xml檔案存在相同的標籤但是內容屬性不一樣,導致unity不知道選擇哪一個。

解決方案:找出所有要打包進去的xml,刪除其中一部分衝突的。

 

2無法打包資源(Fail to re-package resources)

原因:聲明引用了不存在的資源。

 可能是在AndroidManifest.xml中聲明引用了一些不存在的資源。常見問題出在這裡:

  <application       android:allowBackup="true"       android:theme="@android:style/Theme.NoTitleBar"       android:icon="@drawable/app_icon"        android:label="@string/app_name">

解決方案: 將標籤內容換成上述預設的即可。這種問題常見與國內原生sdk的接入。

或者是你現有的jar,aar包所依賴的包沒有匯入進來。你需要找到並匯入進來。放在Plugins\Android目錄下即可。

 

3無法轉換成dex(Unable to convert to dex format)

原因:各個jar,aar包存在衝突。如重複資源套件,各個相關聯的jar,aar版本不一樣(這種情況可能可以匯出但是app閃退)。

解決方案:找到並重複資料刪除的jar,aar包,統一相互關聯的jar,aar包的版本。

對於需要使用google service jar,aar的項目而言,建議使用統一的jar,aar處理外掛程式,該外掛程式還提供自訂匯入jar,aar包。

地址:https://github.com/googlesamples/unity-jar-resolver

 

Unity與安卓互動心得

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.