展訊 Android 7.0 編譯錯誤相關問題

錯誤1:
Communication error with Jack server (28). Try ‘jack-diagnose’

這個問題在大家都用服務器編譯的時候,容易出現,如果自己一個人用服務器編譯,就不會出現,網上說是因爲“JACK編譯器不支持多用戶同時編譯的問題”,我還沒有深入研究。以後再補充。。。

錯誤2:
Multiple same specifications for XXXX.
Error: could not load context file from ……/service_contexts.tmp

找到對應目錄“……/service_contexts.tmp”文件,查看文件:發現“XXXX”相關的規則重複出現,如圖:
這裏寫圖片描述
可以看到每組規則的上邊,會有此規則所在的“service_contexts”文件的路徑,找到相關的“service_contexts”文件打開查看,發現其內容就是如上圖所示的規則,這說明,在編譯的時候,是將相關“service_contexts”文件的內容複製進“……/service_contexts.tmp”文件的。

由於7.0系統的編譯都是由“Ninja”控制的,所以找到out目錄下的相關.ninja腳本,打開文件,搜索相關“service_contexts”文件,比如搜索:”vendor/sprd/proprietories-source/sprdtrusty/vendor/sprd/modules/common/sepolicy/service_contexts”,會找到一條包含此字符串的編譯命令,如圖:
這裏寫圖片描述
查看這條命令,發現同一個路徑下的“service_contexts”被寫入“……/service_contexts.tmp”文件兩次,這說明,生成的.ninja腳本文件的時候就出錯了。

百度一下,7.0系統是由“Kati”把Android中的Makefile,轉換成Ninja文件的,所以,有可能是哪個Makefile文件配置錯了。

然後各種查找,終於發現,原來是重複引用了“device\sprd\sharkl2\common\security_feature.mk”文件造成的,打開此文件如圖:
這裏寫圖片描述
因爲此文件被引用了兩次,所以,“Kati”解析此mk文件也解析了兩次,所以生成的.ninja腳本文件重複了兩次將“service_contexts”文件複製到“……/service_contexts.tmp”,所以編譯的時候,出現了這個錯誤!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章