2013年12月9日 星期一

[Android]Build error出現cannot find symbol

在merge code的時候,直接覆蓋了 *.java 和 *.aidl 
  
當你build code的時候出現下面這樣 
frameworks/base/core/java/android/bluetooth/BluetoothAtt.java:263: cannot find symbol 
symbol  : method getAttPriority(android.bluetooth.BluetoothDevice) 
location: interface android.bluetooth.IBluetooth 
                return mService.getAttPriority(device); 
                                        ^ 
  
你可能要看mService是屬於哪個class 
結果找到是BluetoothService 
但是在BluetoothService裡面寫getAttPriority method阿! 卻還是跟我說找不到 
於是發現BluetoothService是繼承 IBluetooth.Stub,看到Stub,就知道他是binder 
所以就會跟aidl有關,aidl就像是C code裡面的 .h檔案 
在BluetoothService.java裡面新增了一個method,因為他是繼承binder的 
所以就必須在 
\frameworks\base\core\java\android\bluetooth\IBluetooth.aidl 
裡面去宣告getAttPriority 
但是我查過了~~確實有宣告 
所以為了確定他有重新去build這個BluetoothService.java 
我們去out/target/product/zoom/...把 Bluetooth.java & Bluetooth.class刪掉,讓他重新build一次 
  
這樣做完之後就可以build過了 

沒有留言:

張貼留言