各位前輩好
最近在使用unity時用到了plugin
先前沒有接觸過android端,在寫plugin時遇上了一些問題
翻了unity和android java的網頁也都不知道答案
我使用的工具:unity 4.3.4、eclipse,皆是空專案
以下是我如何進行:
在eclipse中新增了一個package,於其下建立了兩個.java檔,分別為test1及test2
test1並沒有做修改,test2則有一個showtest2() function會呼叫一個alert視窗出現
我將這兩個.java "個別" export成.jar檔,一個.jar只包含了一個class
在unity中則是寫了一個C# script用以呼叫test2來顯示alert視窗
於場景中建立空的gameobject將該C# script掛上,只要在手機上一執行就會呼叫test2
接下來就是我疑問的地方了(以下為依序進行)
1.我只把.jar複製到plugins/Android中,build apk然後執行→alert視窗正常顯示
2.修改AndroidManifest.xml,在其中宣告test1和test2,test1為MAIN
build apk然後執行→alert視窗正常顯示
3.再次修改AndroidManifest.xml,這次只宣告了test1為MAIN,將test2從manefest中刪除
build apk然後執行→alert視窗正常顯示
4.建立一個新的package,將test1與test2分開至不同的package,依然export成兩個.jar
沿用step3的manifest檔,build apk然後執行→遊戲一啟動後立刻閃退
5.再次修改AndroidManifest.xml,將test2加入
build apk然後執行→alert視窗正常顯示
第2步、第4步及第5步我都可以理解為什麼會產生那樣的結果
step 2和5都是兩者皆有宣告,因此正常執行沒問題
step 4則是因為test2未宣告而造成程式呼叫出錯而閃退
(如果我這幾點理解有錯,拜託告訴我~~>"<)
最有問題的是第1步和第3步
對於第1步我根本沒放AndroidManifest.xml但程式仍能正常呼叫test2的猜測
可能是unity會自動產生AndroidManifest.xml並把這兩個加進去?
對於第3步則是猜測因為兩者是在相同的package底下,所以在AndroidManifest.xml宣告了
test1後,因為package相同,所以可以抓到相同package的test2?
這兩個疑問困擾了我四天了
查了很多文章,有教學的有發問的,但沒有見到有人和我一樣有相似的問題
(unity answer上有篇問javaplugin,內容和這篇很像的是我發的)
大多都是說AndroidManifest.xml很重要,一定要有,沒有的話會有問題
但我step1壓根沒放,也是正常執行
然後說一定要在AndroidManifest.xml宣告每個activity,但我step3沒宣告test2也是正常
拜託前輩們能夠指出我哪裡有問題……