您好,登錄后才能下訂單哦!
這篇文章主要介紹android sdk編譯中怎么將源代碼加入android.jar以及make原理,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
首先是這個問題如何修改。
在/frameworks/base/Android.mk中,找到如下行:
packages_to_document :=
在該變量的賦值語句最后添加
xxxxx (這里是你的包的名稱,比如com/sina/ui,其實這里就是你的源代碼在/frameworks/base/<你的模塊>/java/下面的一部分路徑,只要能夠唯一的匹配到你的代碼即可)
即可。
該添加的含義是使MAKE系統在制作OFF-LINE DOCUMENT時包含我們的package.
以此類推,添加其他新的package也可以這樣做。
下面簡單把android make sdk的過程寫一下來說明為什么做這樣的修改。調查時是反過來調查的。說明還是按照MAKEFILE的生成的順序來說明吧。
首先在/frameworks/base/Android.mk中定義了進行sdk building的基本目標對象。
包括對哪些.java文件需要生成API文檔,以及這些文檔的路徑。
然后在/build/core/droiddoc.mk中定義了最終進行build的規則和語句。
Android使用javadoc這個工具來生成所有API文檔。
Javadoc這個工具可以帶一個參數指定一個文件,該文件包含了所有要生成文檔的源文件的名字(全路徑)。
該文件的內容就是通過在/framework/base/android.mk里的變量生成的。當然在droiddoc.mk中還添加了build過程中生成的intermediates目錄下的文件。
另外javadoc還可以指定定制的doclet(doclet是基于javadoc特定的API開發的小程序,該程序負責實際的文檔輸出).android的編譯系統就包含了這樣一個doclet叫DroidDoc。可以在/build/tools/DroidDoc目錄下找到該工具的全部源代碼。
正是該工具在生成HTML的同時在/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates下面copy(或者說重新生成了)所有將生成到android.jar中的所有源代碼(.java文件).
該工具把所有生成document的源文件重新按Package組織生成在以上目錄下。
然后進行編譯和打包成android.jar。
根據以上分析,其實android.jar文件是各個公布出來的 API 的源文件經過javadoc重新組織以后再次編譯產生的。 故,android.jar的內容實際上受到javadoc的notation控制和makefile的控制。 對于android中已存在的代碼比如wifi native,可以通過修改源代碼中javadoc的notation的方法重新build得到新的包含wifi native接口的android.jar(將源文件中的@hide這個notation換成別的,然后make update-api;make
sdk)。而對于新加入的代碼,則需要如上方法來修改makefile了。
下面總結一下調查過程中涉及到的知識:
1) javadoc和doclet,簡單的看了一下工具的使用和參數,另外看了一下DriodDoc這個doclet的源代碼,找出哪里生成的.java源文件。
2.makefile分析,android的make showcommands命令可以和任何其他目標一起使用來察看make過程中實際做了一些什么事情。(這點還需要調查這個showcommands如何實現的,因為make -d這個命令給出的信息對于找到問題幫助不大)
3.在跟蹤makefile build過程時,使用$(warning xxxxx)和$(error xxxx)可以在除規則以外的地方打印出變量的值通過這個方法找出了實際建立要編譯的文件列表的地方。
以上是“android sdk編譯中怎么將源代碼加入android.jar以及make原理”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。