各位大佬都是怎么开发调试系统应用的

谈谈大家都是怎么开发调试系统应用的

我们都知道在开发调试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  // 然后在这里引入
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章