手持機開機默認為手動獲取動態IP,每次都要重新手動設置成靜態獲取IP,客戶覺得有點麻煩,想改成可以自動設置。
於是就在網上找了個能用的示例代碼,於是就有了這篇博文。
手持機系統為android 7.0
1、示例代碼: https://gitee.com/love_k/staticIp
經筆者多方查找測試過幾個代碼之后,發現以上代碼經過以下幾個步驟后,可以運行在android7.0系統的手機上;
2、設置靜態IP流程: https://blog.csdn.net/weixin_41722842/article/details/82770904
主要步驟大致上和這篇博文差不多,先有個輪廓;
3、在<manifest>標簽內加上 android:sharedUserId="android.uid.system" 使其成為系統應用得以調用API隱藏方法
signapk.jar
platform.x509.pem
platform.pk8
java -jar signapk.jar platform.x509.pem platform.pk8 app-debug.apk.apk staticip.apk
4、代碼分析和調用的系統源碼解析的博文參考: https://blog.csdn.net/Purple7826/article/details/80608172
十分詳細地講解了class.jar文件內調用的隱藏方法的實現函數,以及程序源碼的解析
@hide 屬性的類和方法,這是一組小級別的被隱藏的 API,稱之為 hidden API。
@hide標識的方法或者類以及 internal 包下的類。
5.1、調用framework接口有兩種方法:
5.1.1、反射調用
5.1.2、直接把framework的jar放在app里面,讓app直接調用
5.2、jar包所在位置:
這些方法或常量的前面的注釋處加了一個@hide,另外還有MTK,高通等在Framework里定義的一些類肯定是找不到的,
所以就通過編譯系統源碼,把class.jar拷貝出來,放入工程的Module里。(網上找或者找linux開發拿)
(以MTK為例,如果編譯debug版本,直接在out/target/product/projectXX/system/framework下面拷出來,)
(如果是user版本,目錄為out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar或是classes_full_debug.jar)
5.3、Android Studio 加入jar包的幾個博文,看起來具有可執行性,先放着吧,我也沒用過。
https://blog.csdn.net/lei1217/article/details/71627916
https://blog.csdn.net/qq_31368801/article/details/81023860
https://blog.csdn.net/abs625/article/details/79611411
5.4、Android的四層架構:Linux內核層,核心庫層,應用框架層(framework),應用層
Framework提供API給上層重復調用,在這層里定義的API都是用Java語言編寫,同時也包含了JNI的方法、
