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

工欲善其事,必先利其器!

成都创新互联是一家专注于网站制作、成都网站建设与策划设计,颍泉网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:颍泉等地区。颍泉做网站价格咨询:18980820575

Android Apk 的推荐开发环境是Eclipse + ADT,它的调试、代码检查、分析、重构等功能为应用程序的开发提供了极大的方便。但对于象浏览器这样的内置应用,由于使用了一些Framework层的隐藏API,在Import到Eclipse工程时会报告很多错误。本文分析和解决了使用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中去即可。所以这里需要做的就是找到包含我们需要的API的Jar包。

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

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

具体步骤:

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

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

使用Eclipse的Import Existing Android Code Into WorkSpace将/packages/apps/Browser目录Import到Eclipse中,建立工程。(代码里还有一个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包可以在SDK的sdk\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开发环境搭建

网页标题:Android浏览器的研究(五)---浏览器APK的Eclipse开发环境搭建
本文来源:https://www.cdcxhl.com/article10/jssggo.html

成都网站建设公司_创新互联,为您提供搜索引擎优化网站设计网页设计公司建站公司品牌网站建设商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管