android studio调试开发系统应用

原创 2016年06月01日 08:52:24

之前机器属于阿富汗就别,所以只能在苦逼的在eclipse里面开发应用。后来鸟枪换炮,系统硬件升级了,就装了个android stuido来开发应用,好处吗,自不用说,

大家百度下,这里就不做广告了。

说下如果在android studio下开发系统应用,这里的系统应用是指需要用到系统隐藏API或者自定义API的这种应用,普通的SDK是无法提供的。

比如:

@Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {

    // TODO Auto-generated method stub
    switch (keyCode) {
      case KeyEvent.KEYCODE_XXXX_DTV:
      case KeyEvent.KEYCODE_XXXX_ATV:
      case KeyEvent.KEYCODE_XXXX_HDMI1:
      case KeyEvent.KEYCODE_XXXX_HDMI2:
      case KeyEvent.KEYCODE_XXXX_HDMI3:

这种自定义的按键,你该咋办。。。代码一上去,直接大大的红色,囧。

也尝试了百度解决方案,说实在的百度就是个垃圾,啥也搜不到,搜到的也是没有经过验证的回答。全是无效答案,所以这里给大家提供自己亲测完美运行的解决方案。

废话不多说,直接说解决:

1 首先你得有源码,和编译的环境,如果没有,下面就不要看了。。。

   有了源码,请编译下,编译完成后,一般会生成out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

   这个是你的framework的编译的链接文件,一定要是这个文件,/system/framework/下面的那个木有用。

2 有了这个神器,你就可以导入到android studio。怎么导入?

  额。。。FILE->Project Structure->Dependencies,记住点+号,一定要选择Provide模式,Compile模式会让你蛋疼的,这个是将库编译到源码中。。。那是无尽的等待啊。

3 导完库后,就是如何去掉那该死的错误提(找不到XXX定义)

  这里我求助了Stackoverflow的大神,他们给出了完美解决方案。

Build.gradle里面加入如下脚本:(注意要用自己的android api来替换,我的是4.4.2所以用Android API 19 platform)

 

task pushDownJdkDependency { 
    def imlFile = file("launcher3.iml")
    try {
        def parsedXml = (new XmlParser()).parse(imlFile)
        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 19 Platform", 'jdkType': 'Android SDK'])
        def writer = new StringWriter()
        new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)
        imlFile.text = writer.toString()
        } catch (FileNotFoundException e) {
            // nop, iml not found
        }

}
这里的Luancher3.xml是和你工程同名的一个配置文件,用于在链接时查找相应的库,默认SDK库在最头上,他是亲儿子。。。有了亲儿子,当然不会认你这个干儿子了。

所以得篡权,这个脚本就是篡权用的,把自己提升到第一位编程亲儿子

<orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" exported="" name="framework" level="project" />
    <orderEntry type="library" exported="" name="tvapi" level="project" />
    <orderEntry type="library" exported="" name="support-annotations-23.2.0" level="project" />
    <orderEntry type="library" exported="" name="SmartPlayer" level="project" />
    <orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
现在变成亲儿子了,讨厌的红色消失啦。。。哈哈。。。

下面加入的是可以让其运行的脚本。这个要放在android的闭包里面。

android {
... 
   allprojects {

        gradle.projectsEvaluated {
            preBuild.dependsOn(pushDownJdkDependency)
            tasks.withType(JavaCompile) {
                options.compilerArgs.add('-Xbootclasspath/p:libs/framework.jar')
            }
        }
    }
}

以上就可以完成在android平台上开发了系统应用了。谢谢大家。


http://download.csdn.net/detail/helldevil/9642150 这里是配置文件


相关文章推荐

如何实现在 Android Studio 上开发系统应用(自带系统签名)

如何实现在 Android Studio 上开发系统应用(自带系统签名)                 基于Android 系统应用包名和路径的局限性,很多同僚不得不暂时放弃 Android ...
  • MLQ8087
  • MLQ8087
  • 2016年12月06日 11:02
  • 3250

使用android studio开发系统级app的gradle配置

as功能强大,体贴周到,让开发者只集中于项目开发上,对于环境、编译等等事项尽量的简单。 不过万事都有利弊,简单的背后就是不灵活,导致我们开发系统级APP时非常蛋疼,因为要用到一些hide类型的api,...

Android Stdio 引入自定义framework.jar 自定义framework-res.apk 中 attr

如果开发一些依赖framework中隐藏方法的应用的话, 如果一直用反射比较繁琐, 所以如果导入framework.jar, 编译的时候依赖framework, 打包的时候不打包, 这样开发就简单了许...
  • ouo555
  • ouo555
  • 2015年05月30日 14:07
  • 7049

Android Studio导入framework.jar等系统jar包方式

从Eclipse 转到Android Studio,必经 的一个过程就是导入第三方jar包,导入普通的jar包方式比较简单,网上其他的例子也比较多,但是关于导入framework.jar包内容就比较少...

在android studio下怎么引入android framework来使用隐藏的api

在android studio下怎么引入android framework来使用隐藏的api

Android studio 系统源码调试

一、Android studio系统源码调试的时候先要对android studio目录下面的几个文件进行说明: android.iml,android.ipr,android.iws. 1.andr...

Android Studio系列(二)使用AS开发/调试整个android系统源代码(不定时更新)

本文是以源码中development/tools/idegen/README作为指导文档,将android源码导入Android Studio查看、调试,旨在提高工作效率。 环境: Ubuntu 1...
  • aaa111
  • aaa111
  • 2015年01月28日 11:01
  • 16293

Android Studio Run程序时自动执行自定义task

android { compileSdkVersion 19 buildToolsVersion "25.0.2" defaultConfig { appli...

如何使用Android Studio开发/调试Android自带系统应用

其实在AndroidStudio里配置与在Eclipse里面配置基本上相差不多 这里先转来别人在Eclipse配置时的原文: [http://blog.csdn.net/xixinyan/artic...

(转载备忘)android studio调试开发系统应用(导入修改后的的framework.jar包)

原文链接:http://blog.csdn.net/helldevil/article/details/51547454 之前机器属于阿富汗就别,所以只能在苦逼的在eclipse里面开发...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android studio调试开发系统应用
举报原因:
原因补充:

(最多只允许输入30个字)