使用AndroidStudio进行系统应用开发

来源:互联网 发布:apache hadoop 安装 编辑:程序博客网 时间:2024/06/15 10:24

在我们进行Android系统app开发时,我们常常会苦恼于:
- 不能在AndroidStudio中调用系统定制API
- 不能通过AndroidStudio直接运行app

那么要解决这两个问题,我们需要做些准备:
-通过系统编译带有定制API的JAR包
-使AndroidStudio引用相应JAR包
-获取系统签名证书
-使AndroidStudio引用签名证书生成app


获取定制API的JAR包

以framework.jar为例(如果编译生成SDK则可以不需要这一步)
进入/frameworks/base执行mm命令,编译生成framework.jar
进入/out/target/common/obj/
JAVA_LIBRARIES/framework_intermediates
获取classes-full-debug.jar

引用framework.jar

打开AndroidStudio,进入Project Structure将jar包放到libs目录下,右击jar选择Add As Library
这里写图片描述

打开Project Structure来设置引入的jar包属性,使jar参与编译,但是不打入到apk中
这里写图片描述

如果是AndroidStudio2.3.3则设置引入的jar为Provided

这里写图片描述

如果是AndroidsTudio3.0的则设置引入的jar为Compile only
这里写图片描述

修改整个项目下的build.gradle文件,在allprojects节点下添加

gradle.projectsEvaluated {    tasks.withType(JavaCompile) {        options.compilerArgs.add('-Xbootclasspath/p:/Users/mac/Documents/MyApplication/test_appops/libs/classes-full-debug.jar')    }}

Xbootclasspath/p表示编译时引用该路径下的jar包

修改该工程下的iml文件,将我们的jar包移动到SDK前面
iml文件

获取系统签名证书

需要使用工具keytool-importkeypair来生成app的签名证书下载地址

将其zip包下载下来,可以得到脚本keytool-importkeypair
在linux环境下使用chmod 777 keytool-importkeypair,赋予脚本权限
这里写图片描述

进入目录/build/target/product/security,获取platform.pk8platform.x509.pem系统签名需要的文件

执行命令
./keytool-importkeypair -k system_app_debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
这里写图片描述

从而得到app的系统签名证书
system_app_debug.keystore
别名alias为platform,密码android

使AndroidStudio引用签名证书

将system_app_debug.keystore放入工程目录下
修改当前工程下的build.gradle文件,在android节点下添加

signingConfigs {    release {        storeFile file("Users/mac/Documents/MyApplication/test_appops/system_app_debug.keystore")        storePassword 'android'        keyAlias 'platform'        keyPassword 'android'    }    debug {        storeFile file("Users/mac/Documents/MyApplication/test_appops/system_app_debug.keystore")        storePassword 'android'        keyAlias 'platform'        keyPassword 'android'    }}buildTypes {    release {        minifyEnabled false        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        signingConfig signingConfigs.release    }}

这里写图片描述

好了这样就可以直接运行啦~~~

ps:如果引入的jar运行错误,要注意编译环境的jdk与AndroidStudio的jdk对应;如果还不行(我是在Android7.1源码环境、OpenJdk1.8编译),则可以尝试安装Android Studio3.0

下图是调用系统hide接口可编译情况
这里写图片描述