关闭

android studio调试开发系统应用

3601人阅读 评论(7) 收藏 举报
分类:

之前机器属于阿富汗就别,所以只能在苦逼的在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 这里是配置文件


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:277283次
    • 积分:2863
    • 等级:
    • 排名:第12874名
    • 原创:39篇
    • 转载:6篇
    • 译文:0篇
    • 评论:93条
    最新评论