like aux#.smali。是smali文件名稱中允許的#符號嗎?
這個文件名是我在class.dex上使用baksmali.jar時創建的。
這是與任何類屬性有關(即如果類是final的,那麼這個問題就來了)。如果是,那麼在運行時如何通過期望Laux的代碼來訪問; - > a:[Lapb;
like aux#.smali。是smali文件名稱中允許的#符號嗎?
這個文件名是我在class.dex上使用baksmali.jar時創建的。
這是與任何類屬性有關(即如果類是final的,那麼這個問題就來了)。如果是,那麼在運行時如何通過期望Laux的代碼來訪問; - > a:[Lapb;
您可以找到BNF語法允許標識符在dex format specification
TypeDescriptor
是,你想看看在頂層規則。 SimpleName
具有名稱每個單獨部分的所有允許字符的列表。
要回答您關於#
的問題:#
是允許的字符,由SimpleName
規則指定。
Laux#;
和Laux;
類是完全無關的。對Laux#;
的引用與Laux;
類沒有任何關係,但通過通常的繼承規則(如果適用)除外。
因此,當我嘗試反編譯dex文件,然後使用apktool重新構建它並在運行時崩潰時,可能會出現錯誤情況。因爲這個aux.smali類被重命名爲aux#.smali。 –
不,就像我說過的,Laux#是一個完全不同的班級。如果你拆開重新組裝,'Laux';'仍然是'Laux'和'Laux#';'仍然是'Laux#';'。如果您遇到崩潰,請查看堆棧跟蹤以及dalvik/art在logcat中產生的任何錯誤。如果您需要幫助解決崩潰問題,請隨時撰寫一個新問題。 – JesusFreke
當apk被混淆時,您通常會看到類似這樣的類名。混淆器試圖利用windows文件系統中的怪癖來防止反彙編,因爲'aux'是windows上的保留文件名。 – JesusFreke