我今天在android源碼做了一些實驗。沒有java進口smali?
讓我告訴了完整的東西,從Android的源 我編譯framework.jar和反編譯它,併產生smali源,並保持它放在一邊。然後從CyanogenMod回購我添加了一個功能的提交到android源和編譯framework.jar反覆反編譯smali源查看smali方面的變化,以便我可以將它們移植到我的ROM。
我正在移植的功能需要導入某些類,例如導入dalvik.system.VMRuntime和使用這些導入類的額外編碼。所以現在我的問題是,我只能看到額外的編碼,即在小代碼中使用這些類,而不是那些導入。因此,當我只移植smali代碼時,我在logcat中得到了java.lang.NoSuchMethodError,它顯示它無法找到該方法。原因很明顯,因爲必要的課程沒有導入,那麼如何在小型代碼中進行?我沒有辦法在smali中做到這一點,因此新引入的方法無法工作。
任何可行的解決方案?
(我不知道smali,所以可能有更好的解決方案) 沒有Java程序需要任何導入語句。要使用例如'ArrayList'你需要導入它或者完全引用它,作爲'java.util.ArrayList'。 也許你可以預處理你添加的代碼,用'dalvik.system.VMRuntime'替換'VMRuntime'等,並刪除所有的導入。 – 2013-03-17 09:45:07
你能舉一個例子說明你將如何避免使用進口產品。 也許你可以舉例說明java.util.Arraylist呢?謝謝 – 2013-03-17 10:01:52
我已將我的評論轉換爲答案,爲我添加的示例騰出空間。 – 2013-03-17 13:43:37