android studio开发系统应用配置

一、配置系统签名,正常在build.gradle中配置即可(略)

二、将系统应用import进android studio变成gradle工程。

三 、分析系统应用mk文件,查看依赖。

四、在build.gradle中添加mk中的依赖,可以远程依赖,也可以去android系统编译目录查找,android系统编译目录为:out/soong/.intermediates.

五、将framework.jar拷贝进工程libs目录,framework.jar在android编译目录 out/soong/.intermediates/frameworks/base/framework/android_common/combined,这个jar可以不限制使用android的系统api.

六,配置framework.jar的gradle依赖,compileOnly只编译即可。

七、在最外层build.gradle根目录中配置脚本,这一步是为了编译的时候以framework中的api优先编译.

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        google()
    }
gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        Set<File> fileSet = options.bootstrapClasspath.getFiles()
        List<File> newFileList =  new ArrayList<>();
        //"../framework.jar" 为相对位置,需要参照着修改,或者用绝对位置
        newFileList.add(new File("./app/libs/framework.jar"))
        newFileList.addAll(fileSet)
        options.bootstrapClasspath = files(
                newFileList.toArray()
        )
    }
}

}

八、在最外层配置脚本,这一步告诉android studio 将android.jar配置到依赖末尾,使得android studio去优先使用framework.jar中的api,这个和上一步的用途是不一样的,上一步是为了编译,而这一步是为了android studio这个开发工具来配置的。

gradle.buildFinished {
    pushDownAndroidSDK('./.idea/modules/app/xxxxx.app.iml')
}

def pushDownAndroidSDK(iml){ def imlFile = file(iml) try { def parsedXml = (new XmlParser()).parse(imlFile) def jdkIndexOf = parsedXml.component[1].orderEntry.findIndexOf { it.’@type’ == ‘jdk’ } if (jdkIndexOf <= 1) { def jdkNode =parsedXml.component[1].orderEntry.find { it.’@type’ == ‘jdk’ } parsedXml.component[1].remove(jdkNode) new Node(parsedXml.component[1], ‘orderEntry’,[’type’: ‘jdk’, ‘jdkName’: ‘Android API 28 Platform’, ‘jdkType’: ‘Android SDK’]) def writer = new StringWriter() new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml) imlFile.text = writer.toString() println “Push File: $iml jdk priority ok” groovy.xml.XmlUtil.serialize(parsedXml,new FileOutputStream(imlFile)) } } catch (Exception e) { // do nothing } }

build with Hugo, theme Stack, visits 0