1. 程式人生 > >Android 設定Settings原始碼匯入eclipse

Android 設定Settings原始碼匯入eclipse

           因為需要對設定欄進行修改,所以需要了解Android原生的Setting原始碼的大體實現。不過將原始碼匯入到eclipse中的執行的話,還是會遇到一些問題,最主要的應該是所需要的jar包的問題。本文也主要是就如何去查詢所需要的jar包進行說解,在這裡記錄下,也是想給自己整理下以備需要。

 ----------------------------------------------------------------------------------------------------------------

1、直接將Settings原始碼匯入eclipse中後,執行時,會出現如下圖所示的錯誤,這是由於缺少相應的jar包導致

    


2、接著 我就根據 import的關鍵字“ASN1InputStream”,在Android原始碼中進行查詢(我是通過命令find -name "ASN1InoutStream.*“進行查詢)


3、 而最終查詢到的結果是:

    ./external/bouncycastle/bcprov/src/main/java/org/bouncycastle/asn1/ASN1InputStream.java


4、所以就切換目錄到 ./external/bouncycastle/下,根據該目錄下的Android.mk檔案,在該目錄下mm最終會生成  bouncycastle.jar JAR包
5、從原始碼中out/target/product/***/framwork 目錄下提取bouncycastle.jar 包,這時提取的jar包是dex檔案,還需要藉助dex2jar工具,將其轉化為jar檔案,最後將其匯入eclipse中即可。
6、其它的所需要的jar包都可以通過該方式來獲取到。

------------------------------------------------------------------------------------------------------------------

在這個過程中還遇到了其它的問題,這裡也一併記錄下:

1、我是直接將Settings.apk 通過adb push到 system/priv-app目錄下,重啟後,設定apk無法執行,報錯如下:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/system/framework/phoneclient.jar", zip file "/system/priv-app/Settings.apk"],nativeLibraryDirectories=[/vendor/lib, /system/

【原因】在專案的Java Build Path 中需要將android-support-v13.jar勾上(如下圖所示)。前面看缺少的jar包時,我是直接將v4和v13的都匯入了,其實是隻需要v13的。