最近在忙着接平台的事,需要接入各種各樣的android平台sdk來發布。在接sdk的時候遇到了這樣的一個情況,有點麻煩,所以紀錄一下。
有些sdk的接入是提供jar包,這樣的可以簡單地將jar包制作成android plugin,加入到unity工程中,打包成apk輸出。
而還有一些sdk,則是提供了一個lib工程。在sdk提供的文檔里說明,要在android工程中,通過添加依賴的方式來添加。但是對於unity工程,這個就有點不一樣。
經過多次試驗,需要步驟:
1. 將sdk工程整個工程目錄【注1】,加到plugins/android/%sdk name%目錄下
2. 同時導出jar包,將jar包放置到plugins/android/libs目錄中。
3. 然后可以選擇制作android plugin的方式,或者直接在unity3d中進行調用。
【注1:具體包含的內容為:res/目錄 libs/目錄 assets/目錄 AndroidManifest.xml .classpath project.properties .project proguard-project.txt 以及其他,依具體情況而定】
説一下在試驗過程中遇到的一個奇怪的現象。在上面的步驟中,如果跳過步驟2,使用unity3d直接生成apk(情況a),與導出eclipse工程,再使用ecliipse生成apk(情況b),會出現兩種不一樣的情況。在情況a中,若調用sdk的接口,會收到classnotfound的異常,而情況b則可以正常通過。通過查看unity工程/Temp/StagingArea/目錄,猜測,unity只是對plugins/android/%sdk name%目錄下的資源文件進行處理,而src目錄下的java文件並不處理。