Android 浏览器的研究(五)--- 浏览器APK的Eclipse开发环境搭建

发布时间:2020-08-02 19:20:32 作者:孙洪波
来源:网络 阅读:1324

工欲善其事,必先利其器


Android Apk 的推荐开发环境是Eclipse + ADT,它的调试、代码检查、分析、重构等功能为应用程序的开发提供了极大的方便。但对于象浏览器这样的内置应用,由于使用了一些Framework层的隐藏API,在ImportEclipse工程时会报告很多错误。本文分析和解决了使用Eclipse建立浏览器Apk的开发环境的一系列问题。


问题:为什么使用Eclipse Import 浏览器目录建立的工程有很多错误

分析:查看这些错误,大部分都是类或者方法无法找到。这是因为浏览器作为内置应用,它使用了Framework里的一些隐藏API,这些API在代码中使用@hide标记,ADT 使用的Android.jar文件中没有包含这些隐藏API,导致在Eclipse工程中报告错误。


问题:这些隐藏的API可以使用吗?

分析:当然,既然浏览器可以在手机上运行,说明它使用的这些隐藏的API在运行环境是可用的。事实上,这些隐藏API都是被编译进入Framework的运行库的。为什么将它们@hide掉而且从android.jar中去除呢?这是个接口与实现的问题,APK应该依赖于Framework的接口,而不是实现,但作为内置应用,它是可以依赖实现的。


问题:如何在Eclipse工程中使用这些隐藏API

分析:其实就像普通的Java工程一样,你想在工程中使用这些API,那就将它们的Jar包添加到你的工程Build Path中去即可。所以这里需要做的就是找到包含我们需要的APIJar包。


问题:如何找到我们需要的Jar包?

分析:使用Android 源代码工程,可以在编译的中间文件中查找你需要的Jar包;或者可以在手机的/system/framework/pull出来你需要的Jar文件,不过这个Jar文件是dex格式的,可以使用dex2jar工具转换为jar文件,不过,在手机上找这些Jar文件不太好判断是哪个文件,我曾经在4.24.3上比较容易地找到,不过在4.4上找了半天也没有找到commongoogle-common,如果你使用4.4,建议在Android源代码工程的编译中间文件夹中查找。


具体步骤:

首先说明,这里使用的是Android 4.4 版本。


第一步,Import Browser 代码,建立Eclipse 工程

使用EclipseImport Existing Android Code Into WorkSpace/packages/apps/Browser目录ImportEclipse中,建立工程。(代码里还有一个Test工程,这里没有使用)

这个时候打开工程,看到当前有619个错误:


Android 浏览器的研究(五)--- 浏览器APK的Eclipse开发环境搭建

随便打开一个源文件,比如com.android.browser.AddBookmarkPage.java,里面的错误如:

The import … cannot be resolved, … cannotbe resolved to a variable等都是文件或者方法找不到的错误。


第二步,根据错误提示,在工程的编译中间文件夹中查找我们需要的Jar

注意这些目录下由于都是临时文件夹,Jar文件需要将它们重命名到恰当的名字。

比如在BrowserActivity文件中提示找不到这个文件:

com.google.common.annotations.VisibleForTesting

于是我们到编译的out/target 中去find 这个类,找到它的目录:

Android 浏览器的研究(五)--- 浏览器APK的Eclipse开发环境搭建


将这个class-jarjar.jar文件重命名为googlecommon.jar


第三步,将前面找到的Jar文件都添加到工程的Java Build Path,注意,需要设置这些类的顺序在Android.jar(Android 4.4 dependency)之前,否则优先使用Android.jar中的类,导致某些方法找不到。

第四步:添加Android-support v13.jar Java Build Path.

从错误提示中可以看到需要support v13这个jar包可以在SDKsdk\extras\android\support\v13目录中找到。

第五步,修改AndroidManifest.xml,添加SDK Version

有一些错误检查是由于SDK版本,修改AndroidManifest.xml,添加SDK版本声明:

<uses-sdkandroid:targetSdkVersion="19"android:maxSdkVersion="19"android:minSdkVersion="19"/>

第六步:修改LogTag.java

将这个类的三个方法的内容删掉,我们不需要它们。


另外,有一些注解类也可以不要,比如在view.ScrollerView 中的错误:The annotation @ViewDebug.ExportedProperty must define the attributeflagMapping,将出错的这一句@ViewDebug.ExportedProperty(category= "layout")删掉即可。


OK,太棒了,所有的错误都消失了,现在我们有了一个没有编译错误的Android Apk 工程了!

Android 浏览器的研究(五)--- 浏览器APK的Eclipse开发环境搭建

推荐阅读:
  1. Android中App签名打包具体操作
  2. Android学习笔记—第一章 搭建开发环境

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

eclipse @hide dex2jar

上一篇:字节跳动Java研发面试99题(含答案):JVM+Spring+MySQL+线程池+锁

下一篇:php生成验证码需要注意的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》