各位大佬都是怎麼開發調試系統應用的

談談大家都是怎麼開發調試系統應用的

我們都知道在開發調試android 系統應用例如,setting,SystemUI,本地媒體,方案商app,等app的時候。因爲這些應用都依賴系統的一些的API或者方案商的一些獨有的API。所以我們一般開發調試都有會以下幾種情況:

1.使用 sublime 或者Source Insight 來開發,然後編寫mk文件,在android 系統源碼中mm單獨編譯。然後push到真機上進行驗證調試。
2.(大神使用)直接在有android 源碼的服務器上使用vim 編輯,然後mm編譯運行,再push到真機上進行驗證調試。(這種大神真是屌炸天了)
3.將系統app源碼導入到android studio上,然後進行編輯,然後再將寫好的部分代碼拷貝到系統app源碼中。然後再mm編譯,然後再push
4.直接將需要調試開發的系統app配成android studio 模式的。然後直接使用android studio 開發調試運行run

顯而易見,前兩種開發編輯時都是不能自動導包的,後面兩種藉助android studio都是可以自動導包的。這裏估計使用方式最多的估計是: 1》3》2》4 。當然大的手機公司,應該4會更普遍一些。

1.對於將以mk方式編譯的系統app配成以gradle在android studio上編譯

其實最主要的就是要將app中依賴的那些包以源碼moudle或者jar包的方式導入到android studio上就行。具體看下mk中有依賴那些東西,然後再去全編的android 系統的out 目錄下將這些包拷進去,一般都在以下的目錄。其中基本肯定都需要先到framework.jar的

out\target\common\obj\JAVA_LIBRARIES
2. 其次的話,就是需要將系統簽名也導入到android studio 中。

1.android 源碼生成apk系統簽名文件
首先在 Android 源碼目錄執行如下命令,切到 security 目錄:

cd build/target/product/security/

然後執行 ls -la 可以查看目錄下的文件:

build/target/product/security$ ls -al
總用量 80
drwxr-xr-x 2  4096 12月 23 21:23 .
drwxr-xr-x 4  4096 12月 23 11:55 ..
-rw-r--r-- 1  656 12月 23 11:55 Android.mk
-rw-r--r-- 1  1216 12月 23 11:55 media.pk8
-rw-r--r-- 1  1675 12月 23 11:55 media.x509.pem
-rw-r--r-- 1  2375 12月 23 11:55 networkstack.pk8
-rw-r--r-- 1  2094 12月 23 11:55 networkstack.x509.pem
-rw-r--r-- 1  2926 12月 23 21:23 platform.jks
-rw-r--r-- 1  2892 12月 23 21:23 platform.p12
-rw-r--r-- 1  1704 12月 23 21:22 platform.pem
-rw-r--r-- 1  1216 12月 23 11:55 platform.pk8
-rw-r--r-- 1  1675 12月 23 11:55 platform.x509.pem
-rw-r--r-- 1  3128 12月 23 11:55 README
-rw-r--r-- 1  1218 12月 23 11:55 shared.pk8
-rw-r--r-- 1  1675 12月 23 11:55 shared.x509.pem
-rw-r--r-- 1  1217 12月 23 11:55 testkey.pk8
-rw-r--r-- 1  1675 12月 23 11:55 testkey.x509.pem
-rw-r--r-- 1  524 12月 23 11:55 verity_key
-rw-r--r-- 1  1219 12月 23 11:55 verity.pk8
-rw-r--r-- 1  1444 12月 23 11:55 verity.x509.pem

其中的 platform.pk8 是製作系統簽名需要的文件。

詳細步驟

1、在 security 目錄下,執行命令:

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

此時會在當前目錄生成臨時文件 platform.pem 。

2、接着執行如下命令,將在目錄下生成 platform.p12 文件,它本質上應該就是一個數字證書。

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey

這裏的 android (storePassword,keyPassword)和 androiddebugkey (keyAlias)可以自行替換,但爲了方便IDE識別,我們儘量將這兩個參數與 IDE 默認的簽名文件內容保持一致。

3、然後再執行如下命令:

keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android

這裏執行後會有如下提示信息:

root:/....../build/target/product/security(master)$ keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android
Entry for alias androiddebugkey successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

1 個成功,0 個失敗或取消,說明命令執行成功,已經在當前目錄下生成了 platform.jks 文件,而這個文件就是可以用在 Android Studio 裏面的簽名文件了。

命令裏面的 platform.jks 對應的就是生成的簽名文件的名稱,這個名字可以自行修改,而且後綴也可以換成 .keystore,例如 debug.keystore。

4、然後將這個 platform.jks 拷貝到自己的目錄下,並在IDE中使用這個簽名文件簽名
apk,或者直接將 IDE 默認的簽名文件替換掉,AS 也可以修改編譯腳本。

5、此時IDE打包的 apk 就可以直接安裝到擁有相同platform簽名的機器中了。

build.gradle文件:
    signingConfigs {
        signing_q {
            storeFile file("platform.jks")
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.signing_q  //然後在這裏引入
        }

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.signing  // 然後在這裏引入
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章