第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用可用的隱藏API和內(nèi)部API構(gòu)建Android SDK?

如何使用可用的隱藏API和內(nèi)部API構(gòu)建Android SDK?

牧羊人nacy 2019-10-15 10:00:13
我想重建Android SDK(或更確切地說,僅是android.jar)以包括隱藏的和內(nèi)部的API。我找不到有關(guān)如何執(zhí)行此操作的任何文檔或討論。我已經(jīng)安裝了一個能夠構(gòu)建cm7的Ubuntu CyanogenMod構(gòu)建環(huán)境?,F(xiàn)在,我讀到make SDK將構(gòu)建SDK,但我想構(gòu)建一個SDK,其中包含使用@hide標(biāo)記為隱藏的方法和字段。這可能嗎?我想要做的是對使用隱藏API的應(yīng)用程序進行更改,為了重建它,我想使用修改后的SDK。
查看完整描述

3 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

我已經(jīng)對此進行了一些調(diào)查,而我的結(jié)論很簡單:沒有大量工作就無法完成。閱讀此答案的其余部分,以詳細(xì)了解我所發(fā)現(xiàn)的內(nèi)容。


android.jar實際上由“公共API”的framework.jarcore.jar被發(fā)現(xiàn)在system/frameworks/該設(shè)備上。android.jar我稱之為Java庫標(biāo)頭,實際字節(jié)碼中的所有實現(xiàn)都只是一個throw new RuntimeException("stub");,這使您可以針對它android.jar(例如在Eclipse中)進行構(gòu)建,但是必須在設(shè)備或仿真器上執(zhí)行。

Android SDK的公共API由@{hide}javadoc注釋為前綴的類/方法/字段定義。也就是說,所有注釋的內(nèi)容都包含在SDK中。

android.jar從位于源中內(nèi)置out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates本身由工具生成DroidDoc位于build/tools/droiddoc。

DroidDoc是生成實際Android SDK文檔的工具(可能是從javadoc改編而成,或使用javadoc改編而成)。作為副作用,可能是因為它已經(jīng)解析了所有javadoc,所以它還會噴出android存根,然后將android.jar其編譯為在SDK中分發(fā)的。

因此,要包含隱藏的內(nèi)容,如果只想包含特定部分,則可以刪除@hide注釋并重新構(gòu)建SDK。

但是,如果要包括所有隱藏部分,事情會變得復(fù)雜得多。您可以修改DroidDoc(相關(guān)資源在中build/tools/droiddoc/src/Stubs.java),以使任何內(nèi)容都不會被檢測為隱藏。這相當(dāng)瑣碎,我已經(jīng)嘗試過了,但是隨后生成的存根根本無法編譯。

我現(xiàn)在的結(jié)論是,這根本不可行。如果刪除DroidDoc中檢測隱藏注釋的部分,則生成的存根將無法編譯,并且需要大量工作才能正確編譯。

因此,我對您的問題的回答是:不,如果不做很多工作就無法完成。抱歉。


有關(guān)該mkstubs工具的旁注。mkstubs在構(gòu)建SDK插件時使用,即您可以在Android SDK管理器中從供應(yīng)商處找到的插件,例如Samsung為您提供針對Samsung手機特定內(nèi)容的附加API。mkstubs與DroidDoc存根生成過程幾乎相同,但是它不使用@hide注釋,它使用一個.defs文件來描述要從SDK插件中包含或排除哪些程序包/類/字段。

然而,這一切無關(guān)的問題,如在Android SDK構(gòu)建并不能使用該mkstubs工具。(不幸。)


查看完整回答
反對 回復(fù) 2019-10-15
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗 獲得超7個贊

我們可以從Android平臺重建* .jar文件。


首先,將ADB連接到您的設(shè)備。然后運行:


adb pull /system/framework/core.jar .

adb pull /system/framework/framework.jar .

在core.jar包含標(biāo)準(zhǔn)的Java庫(java.*)和framework.jar包含了Android庫(android.*)。由于實際文件是DEX格式而不是JAR格式,因此尚不可用。


我們可以使用諸如dex2jar之類的工具將這些DEX格式的* .jars轉(zhuǎn)換為真實的JAR :


dex2jar core.jar

dex2jar framework.jar

然后使用“添加外部JAR ...”拉入這些jar(假設(shè)您正在使用Eclipse ADT)


右鍵單擊Project → Properties → Java Build Path → Libraries → Add External JARs...→(從上方選擇core-dex2jar.jar和framework-dex2jar.jar)。

這將使您能夠使用內(nèi)部和某些Java 7 API。(據(jù)我所知,生成的APK不包含JAR中的任何實際代碼。)


查看完整回答
反對 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 573 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號