当前位置: 首页 > 编程日记 > 正文

干货:Android 源码使用心得分享

我相信很多初学者会和我一样经常在网上去找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源码论坛,上面的代码非常全面给力同时都可以运行。

转载于:https://www.cnblogs.com/akaifa/p/4701612.html

相关文章:

60分钟入门深度学习工具PyTorch

「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Soumith Chintala中文翻译、注释制作 | 黄海广配置环境:PyTorch 1.3,python 3.7,主机:显卡:一块1080ti;内存:32g…

Windows客户端C/C++编程规范“建议”——指针

2 指针 2.1 尽量使用智能指针 等级: 【推荐】说明:正确使用智能指针可以省去指针管理的工作。2.2 类成员变量指针释放后一定要置空 等级: 【必须】说明:如果类成员变量指针在释放后没有置空,将出现如下问题&#xff1…

Bug tracker .net 部署经验(完善中)

Bug tracker .net 部署经验1. 软件要求windows 2003 serverSP1IISSQL sever 2005Net framework2. 安装和配置Bug tracker .net 提供了一个readme 文件。解压安装文件至某一个目录。在SQL SERVER 2005中新建一个数据库。确保IIS工作正常。定义一个虚拟目录,将其指向安…

Windows客户端C/C++编程规范“建议”——函数调用

3 函数调用 3.1 谨慎使用递归方法 等级: 【推荐】说明:递归方式控制不当,可能会导致栈空间不够而崩溃。一般的递归都可以使用循环代替。3.2 不要使用using namespace 等级: 【必须】说明:这是曾经教科书上的一种写法&a…

“一百万行Python代码对任何人都足够了”

作者 | Jake Edge译者 | Kolen出品 | AI科技大本营(ID: rgznai100)编程语言通常对其操作过程的各个方面都有或明或暗的限制。诸如标识符的最大长度或变量可以存储的值的范围之类的事情,这些是相当明显的例子,但是还有其他一些例子…

网吧电影客户端Realplayer的装配问题

网吧电影客户端Realplayer的装配问题 作者: 出处:网吧联盟 ( 20 ) 砖 ( 22 ) 好 评论 ( 1 ) 条 进入论坛 更新时间:2005-11-24 16:54关 键 词:网吧阅读提示:一般有过开网吧经验的朋友,应当知道如何让自己的realplayer播放器支…

基于Servlet+JDBC+Bootstrap+MySQL+AJAX权限管理系统项目实战教程

项目简介 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。 本系…

Windows客户端C/C++编程规范“建议”——表达式和运算

4 表达式和运算 4.1 比较操作中将常量设置为左值 等级: 【推荐】说明:编写代码时,如果将常量设置为右值。可能因马虎将“”写成“”导致逻辑错误。这种场景下,编译器是不会报错的,代码检查也比较容易被忽视。例子&…

GitHub标星1.5w+,从此我只用这款全能高速下载工具

「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Rocky0429来源 | Python空间(ID:Devtogether )大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻...网上资源眼花缭乱,下载的方…

CSS text-transform 属性

定义 text-transform 对元素中的字母进行控制。 继承性:Yes 说明 这个属性会改变元素中的字母大小写,而不论源文档中文本的大小写。如果值为 capitalize,则要对某些字母大写,但是并没有明确定义如何确定哪些字母要大写&#xff0c…

SeaJS基本开发原则

SeaJS基本开发原则 在讨论SeaJS的具体使用前,先介绍一下SeaJS的模块化理念和开发原则。使用SeaJS开发JavaScript的基本原则就是:一切皆为模块。引入SeaJS后,编写JavaScript代码就变成了编写一个又一个模块,SeaJS中模块的概念有点类…

SMS主站点配置详细图解:Sms2003系列之二

SMS主站点配置在上一篇文章中,我们介绍了如何进行SMS2003+SP2的部署。本文中,我们将介绍如何进行SMS主站点的配置。在SMS中,站点(site)定义并包含了所有SMS管理的对象。当我们第一次安装SMS时,实际安装的是一个SMS站点…

2019,不可错过的NLP“高光时刻”

作者 | Elvis译者 | 凯隐、夕颜出品 | AI科技大本营(ID: rgznai100)【导读】对自然语音处理(NLP)领域而言,2019年是令人印象深刻的一年,本文将回顾2019年NLP和机器学习领域的重要事件。内容 主要集中于 NLP…

Windows客户端C/C++编程规范“建议”——结构

5 结构 5.1 不要使用goto 等级: 【必须】说明:在大型项目中,goto的滥用会导致灾难性后果。因为我们程序中一般不存在从一个函数体内部跳转到另一个函数体内部的场景,所以我们可以将跳转控制在函数内部,从而避免灾难。…

WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/47395633 WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我…

“不会Linux,怎么当程序员?”骨灰级程序员:干啥都不行。

说起优秀程序员的必备技能,我想大家都可以说很多,比如:数据结构、算法、数学、编程语言等等。但是,你可能会忽略了每一个程序员都应该掌握的技能:Linux。想一想,我们日常学习、求职、工作场景的中&#xff…

与空连接相关的几条命令

1)建立空连接:net use \\IP\ipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格) 2)建立非空连接:net use \\IP\ipc$ "密码" /user:"用户名" (同样有3个空格)3)映射默认共享:net use z: \\IP\c$ "密码" /u…

Windows客户端C/C++编程规范“建议”——宏

6 宏 6.1 减少宏的使用 等级: 【建议】说明:宏的使用,将使得调试变得麻烦。所以在设计和使用宏的时候,请确保宏的逻辑是阅读者不会去关心细节的行为。6.2 宏定义中字母需大写 等级: 【必须】说明:为了醒目…

Struts2中通配符的使用

1、准备工作 新建一个JavaWeb项目HelloWord,导入Struts2的.jar包,在Web.xml下配置Struts2的监听,在src下添加Struts2的配置文件struts.xml;将该项目部署到服务器(Tomcat)上,运行检查项目是否部署成功和其他错误&#x…

关于Spark NLP学习,你需要掌握的LightPipeline(附代码)| CSDN博文精选

作者 | Veysel Kocaman, Data Scientist & ML Researcher ANKIT CHOUDHARY翻译 | 赵春光校对 | 申利彬来源 | 数据派THU(*点击阅读原文,查看作者更多精彩文章)【导读】Pipeline具体来说是一个多阶段的序列,每个阶段由一个Transformer或者…

网络编程--ftp客户端的实现(c#版)

.net2.0对ftp有了一个很好的封装,但是确容易让人忽略ftp的真正内部实现,下面是我实现的ftp客户端的功能,其主要步骤是这样的:1、创建一个FtpWebRequest对象,指向ftp服务器的uri 2、设置ftp的执行方法(上传,下载等) 3、给FtpWebReq…

Windows客户端C/C++编程规范“建议”——文件

7 文件 7.1 正确使用#include 等级&#xff1a;【推荐】 说明&#xff1a;#include <>和#include “”导致编译器在搜索文件时&#xff0c;搜索的路径顺序不同。所以需要正确使用#include&#xff0c;以避免包含错了头文件。 语法形式操作带引号的形式预处理器按以下…

让你的网站支持 Emoji

SegmentFault有用户提出要支持Emoji表情输入&#xff0c;就研究了一下&#xff1a; 要记得备份数据库。 首先Mysql数据库在5.5.3之后开始支持utf8mb4字符集&#xff0c;所以mysql版本是5.5.3&#xff0b;的都可以设置让数据库存储Emoji表情&#xff0c;如果你的应用有移动端的&…

Windows客户端C/C++编程规范“建议”——变量和常量

8 变量和常量 8.1 尽量不要使用全局变量 等级&#xff1a; 【要求】说明&#xff1a;全局变量的滥用和goto的滥用一样&#xff0c;都是一种灾难。它将使得逻辑变得难以调试和控制。8.2 不涉及外部使用的全局变量需要使用static关键字修饰 等级&#xff1a; 【要求】说明&#…

机器学习模型五花八门不知道怎么选?这份指南告诉你

作者 | LAVANYA译者 | 陆离编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】在本文中&#xff0c;我们将探讨不同的机器学习模型&#xff0c;以及每个模型合理的使用场景。一般来说&#xff0c;基于树形结构的模型在Kaggle竞赛中是表现最好的&…

WinAPI: FlattenPath、WidenPath

不管什么曲线命令, 到来路径中都会变成 Bezier 线; 也就是说路径中只有直线和 Bezier 线.FlattenPath 和 WidenPath 都能够把路径中的 Bezier 线转换为近似的直线; 不同的是: 用 WidenPath 转换后貌似加宽了线, 其实它是转换成了一个包围路径的新路径(类似区域).本例效果图:代码…

Android - 小的特点 - 使用最新版本ShareSDK手册分享(分享自己定义的接口)

前太实用Share SDK很快分享&#xff0c;但官员demo快捷共享接口已被设置死&#xff0c;该公司的产品还设计了自己的份额接口&#xff0c;这需要我手动共享。 读了一堆公文&#xff0c;最终写出来&#xff0c;行&#xff0c;废话&#xff0c;进入主题。 之前没实用过ShareSDK分享…

结合Flink,国内自研,大规模实时动态认知图谱平台——AbutionGraph |博文精选

作者 | Raini出品 | 北京图特摩斯科技 &#xff08;www.thutmose.cn&#xff09;(*点击阅读原文&#xff0c;查看作者更多精彩文章&#xff09;Flink&#xff1a;目前最受关注的大数据技术&#xff0c;最活跃 Apache 项目之一。AbutionGraph&#xff1a;北京图特摩斯科技自研的…

Windows客户端C/C++编程规范“建议”——风格

9 风格 9.1 优先使用匈牙利命名法 等级&#xff1a; 【推荐】说明&#xff1a;该方法由微软总设计师设计。Windows上编程最好遵从该标准。详细介绍见&#xff1a;http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%959.2 变量名结合使用匈牙…

使用GIF(仅限Delphi2007)

-----------uses GIFImg; procedure TForm1.FormCreate(Sender: TObject); begin // 先在窗体上放一个 TImage 组件&#xff1a;Image1&#xff1b; Image1.Picture.LoadFromFile(C:\Example.gif); // AnimationSpeed 设定动画速度&#xff0c;值越大&#xff0c;速度越快…