我相信很多初学者会和我一样经常在网上去找Android开发源码,但是往往因为运行不起来非常的懊恼!在做
爱开发网站的时候,收集App代码时就遇到了这种困难,我相信网络上面的源码大部分在发布前都会人工测试,能够正常运行才会发布,要肯定是没法截图的,那么我们应该如何解决这样的问题呢?
首先让我们来看看到底是哪些原因造成的这种问题,一个源码不能正常运行的原因可能有很多,比如有一些项目是有时效性的,通俗的讲就是项目以前依赖的服务端可以用但是现在不能用了,比如源码作者把服务端关闭了,或者软件内置的第三方jar包太老了不能正常返回项目请求的数据了,这种情况会导致项目打开运行时报错,常见的现象就是运行起来以后卡在一个初始化界面不动或者就干脆闪退,这种情况必须要更改或者屏蔽这段需要联网检测或者服务的代码才能解决问题,下面说的几种情况是你在网上下载下来的安卓源码导入到eclipse里面不能运行的解决方法,不是源码运行起来出错的解决方法,接下来我教你一一排查
下载的文件是否有问题
解决办法是用解压软件打开或者解压的过程中有没有弹出什么错误提示,如果有错误提示那就重新下载一遍文件。或者去其他网站寻找相关的资源进行下载。
弄清楚IDE的版本
如果确定下载的压缩包没有问题那就看看是不是编译工具不一样,
爱开发App源码论坛测试的时候用的是Android Developer Tools Build: v22.6.2-1085508(如果你不知道怎么看IDE的版本请自行百度),理论上adt22.6以上的版本都可以正常导入本站的项目。adt22.6以下不敢保证,不过你可以多导入几个项目试试是不是都报错,如果都报错的话那就可能是IDE问题。如果你用的Android Studio或者其他工具请自行解决文件导入问题
检查项目导入是否正确
正确的项目导入步骤是:打开eclipse-->点击File--选择-->Import-->点击android下的Existing Android...-->点击Browse,查找你的工程-->最后点击“Finish”,完成(强调一下,你的工程一定不要放在第一次eclipse生成的工作空间的目录下,不然导入不会成功。。。 )如果还是不懂,可以看下图文教程:
这里
SDK编译版本
很多朋友的adt是在谷歌官网或者在网上随便找了一个,谷歌官网的adt默认只带有一个最新版本的sdk,低版本的sdk还需要通过adt自带的Android SDK Manager 自己下载。如果你不知道你的adt包括哪些版本的sdk你可以在点你adt上面的菜单:Window-Preferences-Android(汉化版本:窗口-首选项-Android)查看你的环境都有哪些sdk,本站用来测试源码的sdk经常使用的版本有:2.3.7、4.2.2、4.4.2,老一些的源码大多是使用2.3.7测试的,新源码4.4.2居多。如果你的sdk不包括4.4.2或者4.2.2可以去
这个网站找到这两个版本的sdk下载下来,怎么使用下载下来的sdk这个网站有说明,在这里不深究。
项目编码问题
另外还有一个问题就是判断一下项目的编码是否正确,如果你导入的源码在源码名字上面有一个红叉叉,点那个带有红叉叉的文件夹图标发现一个名字叫src的文件夹图标上也有一个红叉叉,依次点开带红叉叉的文件夹或者文件,双击点开出错的java文件,在代码编辑窗口点右侧小红方块就可以快速定位到出错的代码行,看一下这行代码是不是里面夹杂着乱码,这时你在你的项目名字上点右键选择最后一个菜单Preferences(汉化版本:首选项)(或者点击项目名字然后按快捷键Alt+Enter效果一样),在弹出窗口什么都不点在右侧找Text file encoding(汉化版本:文本文件编码)这一项,勾选Other(汉化版本:其他),如果显示的GBK那就换成UTF-8如果是UTF-8那就换成GBK(中国大陆最常用的就是这两种编码),点确定。项目几秒后就会自动刷新,看一下红叉叉是不是没了,如果还存在的话那就选中项目点菜单里面的Project->Clean...->Clean projects selected below(汉化版本:项目->清理->清理下面所选项目)然后勾选要清理缓存的项目名字点OK就会强制清理项目缓存
是否缺少依赖
一些较大的项目大多包括有子项目或者使用了第三方的库文件,你可以在你的项目名字上点右键选择最后一个菜单Preferences(中文版的名字叫首选项)(或者点击项目名字然后按快捷键Alt+Enter效果一样),点左侧的Android菜单这时右侧会出现两个小窗口,一个是Project Build Target(项目编译版本)一个是Library。看一下Library里面有没有一个红叉有的话把鼠标放到这行路径上面2秒不要动会显示路径全名,大致记一下名字,然后点Add,eclipse会自动列出你导入的过的Library,看看有没有名字跟你刚才记的名字差不多的点,双击就会添加了,然后再把出错的Remove掉就可以了,然而大部分情况是点Add出来的弹出框什么都没有,这时候你就要自己想办法找到依赖的Library了,
http://bbs.aiyingli.com/发布的源码如果需要Library会一同打包。如果是在其他地方找的项目源码那Library估计就不好找了。
是否缺少jar包
很多项目用到了一些第三方的jar包,但是作者使用的jar包可能没有放到项目目录下面,导致打包的时候没有打进去,别人导入了这个项目就会去源路径找这个jar包,但是导入人的电脑这个路径上肯定不会有这个jar包的,你可以在你的项目名字上点右键选择最后一个菜单Preferences(汉化版本:首选项)(或者点击项目名字然后按快捷键Alt+Enter效果一样),点左侧的Java Build Path菜单(汉化版本:Java构建路径)这时右侧会出现一个有四个选项卡的的窗口,点Libraries(汉化版本:库)窗口看看下面有没有红叉叉,有红叉叉点Add JARs点开你正在解决问题的这个项目,再点libs目录,看看有没有同名的jar包,如果有的话就双击选择,然后选中带红叉叉的jar包点Remove。如果没有的话就自己想办法搞这个jar去了,我的做法是把jar包名字放在百度里面搜,看看能不能找到相同文件名的文件,然后放到项目的libs目录里面再按照上面的方法引用,如果找不到那就自求多福了。点确定。项目几秒后就会自动刷新,看一下红叉叉是不是没了,如果还存在的话那就选中项目点菜单里面的Project->Clean...->Clean projects selected below(汉化版本:项目->清理->清理下面所选项目)然后勾选要清理缓存的项目名字点OK就会强制清理项目缓存
最后推荐几个非常棒的App源码下载站:当然CSDN上有很多优质的代码,另外大家可以看下
app源码论坛,上面的代码非常全面给力同时都可以运行。
- Android版的疯狂猜图游戏源码完整版分享
这个游戏源码是在安装教程网那么分享过来的,Android版的疯狂猜图游戏源码完整版分享,也是本人之前很早以前发的一款游戏源码的,大家如果想了解一下,可以看看吧,不说多了,上一个图先吧. > ...
- android源码 分享1
技术博客 "碎片化"严重,安卓走向封闭?[Bus Weekly]48期 阅读数:286 2017-05-08 按照NetMarketShare统计数据显示, ...
- Android学习进阶路线导航线路(Android源码分享)
转 ...
- 分享一个完美的新闻客户端(酷商城)Android源码
分享一个完美的新闻客户端(酷商城)Android源码,这个源码项目是从安卓教程网转载过来的,项目主要是解析html,fragment,异步缓存图片加载,webview加载网页等.可以正常的运行的,我已 ...
- (转)Android学习进阶路线导航线路(Android源码分享)
转载请注明出处:http://blog.csdn.net/qinjuning 前言:公司最近来了很多应届实习生,看着他们充满信心但略带稚气的脸庞上,想到了去年的自己,那是的我是不是也和 现在的他们一 ...
- 从Android源码的角度分析Binder机制
欢迎访问我的个人博客,原文链接:http://wensibo.top/2017/07/03/Binder/ ,未经允许不得转载! 前言 大家好,好久不见,距离上篇文章已经有35天之久了,因为身体不舒服 ...
- Android 源码下载方法(Git 方式clone)
Android源码对于Android开发者来说,迟早有一天你会用到的,所以就记录一下,分享给读者,希望对读者有用 这里需要使用到Git相关知识,不清楚的可以先阅读,了解的可以跳过 Git-Tortoi ...
- 关于在线查看相关开源源码的网站,包括Android源码
无废话,纯干货! 各种源码自行搜索: http://grepcode.com/ Android源码:http://grepcode.com/project/repository.grepcode.co ...
- android源码-安卓源码-Android源码下载-安卓游戏源码
android源码 高仿精仿金山手机卫士应用源码V1.2 高仿精仿金山手机卫士应用源码,该应用的级别实现了金山卫士的级别功能了,可以说跟现实中我们使用的金山卫士应用的功能几乎差不 人气:9286 ...
随机推荐
- C++的优秀特性2:inline 函数
(转载请注明原创于潘多拉盒子) Inline函数是C++的一个很小的特性,在不计较效率的情况下,这个特性似乎可有可无.然而,C++天生是为最为广泛的应用场景设计的,因此,总会有关于效率的问题.其实,除 ...
- IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
在IAR中的help中输入argument variables时会找到这样的一个列表: Argument variables On many of the pages in the Options d ...
- Codeforces Gym 100531I Instruction 构造
Problem I. Instruction 题目连接: http://codeforces.com/gym/100531/attachments Description Ingrid is a he ...
- C语言(1+1+2+1+2+3....+n)
#include<stdio.h> void main(){ int i,j,a; long sum=0; //输入a的值 scanf("%d",&a); if ...
- js密码强度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Cocos2d-x 3.1 内存管理机制
Cocos2d-x使用的内存管理方式是引用计数.引用计数是一种非常有效的机制.通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数.当对象添加一次引用时,计数器加1:而对象失去一次引用时.计数 ...
- Windows下编译openssl
依赖工具: 1.VS 2.perl 编译方法: release: :\> 切换到openssl目录 :\> perl Configure VC-WIN32 no-asm --prefix= ...
- jQuery代码性能小细节
选择器Selector的使用 $("#id")使用id来定位DOM元素无疑是最佳提高性能方式,因为jQuery底层将直接调用本地方法document.getElementbyId( ...
- shell 编程中使用到得if语句内判断参数
http://blog.chinaunix.net/uid/21411227/cid-63616-list-1.html 1.判断文件类型 –b 当file存在并且是块文件时返回真 -c 当fil ...
- javascript 的位操作符转换推断
var a = "10" | 0; alert(a); alert (typeof a); 结果为10,number. 这就是说这条语句可以将字符串转化为number. 如果: v ...