使用Android Studio开发系统性的应用(如闹钟)(多图)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunshine199221/article/details/71481285

前言

由于工作需要,需要在Android Studio中开发系统级别的应用。在把源码导入as的过程中摸了踩了很多坑,根据同事以前的成果以及自己的一些摸索,终于可以在as中开发系统级别的应用了,这里记录一下,方便你我他。

总结

总结一下,基本的步骤就是:
1、获取到源码以及根据Android.mk文件确定需要依赖的jar包、库等;
2、从编译源码输出的中间文件中寻找jar、库;
3、导入as之后,相关jar包、库的依赖;
4、一些重复资源的排查等,这些往往会引起编译不过的问题;
5、依赖framework.jar包,几乎所有的系统级应用都会使用到framework中hide的类、函数等,这是重中之重,也是最容易出问题的地方。

一、拿到系统应用的源码并分析android.mk文件

1、app源码路径

如图,该目录下拿到我们的app源码

如图,在packages/apps下可以拿到我们需要的app的源码。

app的源码

把该源码拷到我们本地目录上,然后分析并根据android.mk文件进行相关的导入工作。
android.mk文件可以参考:http://blog.sina.com.cn/s/blog_602f8770010148ce.html

2、分析android.mk文件

android.mk文件
如图,显示的是我们需要依赖的jar包以及库。datetimepicker、messageformat以及framework.jar需要我们到编译源码生成的中间文件中去找,其他的jar可以直接通过gradle依赖。这些jar包、依赖库的获取可以参考:http://blog.csdn.net/qq690197664/article/details/18223495

3、根据android.mk获取jar包及依赖的库

1、根据android.mk获取jar包

framework.jar的获取
如图可以在“out\target\common\obj\JAVA_LIBRARIES\framework_intermediates”目录下获取,把classes.jar改成你想要的名字即可,我为了识别,改为framework.jar。其他的jar包获取方式一样。

2、根据android.mk获取依赖库

需要依赖的库,android.mk文件中常常已经写明了获取的路径,如果找不到,多找找就是了,存在即合理。。。
如下图,给出了datetimepicker库的路径,该库,我们需要在as中通过Import Module的方式引入并依赖。
这里写图片描述
路径:”..\MTK_Android7_S31N\mydroid\frameworks\opt\datetimepicker”

这里写图片描述
把该工程拷贝到本地并且以module的方式引入工程并依赖

二、导入Android Studio中

拿到app源码并且准备好相关的jar包之后就可以进行着最关键的一步了。

1、导入到as中

1、这个,我们不断的next即可

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2、导入,需要一定的时间。导入完成后,会有一个导入的说明性文件,提示我们导入过程as对文件做了什么改变等。可以删除。

这里写图片描述

2、接下来就是依赖各种库了

1、依赖中央库的jar包

这种jar是可以直接通过中央库依赖的,我们像平时一般的第三方应用依赖一样操作即可。如图:
这里写图片描述

2、依赖Android.mk中指明的datetimepicker库

这里写图片描述

3、依赖framework.jar,并提高其优先级。这是关键一步!

需要依赖的module下创建lib文件夹,把framework.jar放入其中
这里写图片描述

在project级别的build.gradle文件中加入如下语句,注意framework.jar的路径
这里写图片描述

在project级别的build.gradle文件中加入如下语句,这里把framework.jar包的优先级提高到比SDK高
这里写图片描述

三、总结

经过以上这些步骤,基本已经可以用Android Studio来进行系统级别的应用的开发了。总结一下,基本的步骤就是:
1、获取到源码以及根据Android.mk文件确定需要依赖的jar包、库等;
2、从编译源码输出的中间文件中寻找jar、库;
3、导入as之后,相关jar包、库的依赖;
4、一些重复资源的排查等,这些往往会引起编译不过的问题;
5、依赖framework.jar包,几乎所有的系统级应用都会使用到framework中hide的类、函数等,这是重中之重,也是最容易出问题的地方。

没有更多推荐了,返回首页