"lianren"项目解析(一)

"lianren" 项目是一个非常优秀的 Android 商业级 项目  项目中基本涵盖了各种 Android APP 开发的技术 让笔者从中学到特别多的东西 特别感谢  开发者:huxinwu 项目开发者 和 所有人  huxinwu&github_androidOne 和 其 QQ交流群  :195104825  欢迎大家关注加入 

 

1 工欲善其事 必先利其器 (jar,依赖分析)

对于开发一款优秀的 app 我们怎么使它在最短的时间内 做到最好的质量 是很重要的 , 秉承着程序员不重复发明轮子的理念 我们经常需要借助一些 优秀的开源框架 和 第三方 来加速我们的开发周期 同时 还能得到质量的保证 (例如你需要在app中加入即使通讯的功能 自己搭建xmpp吗? 光这个时间 就得花上几个月 而且 还不一定能够做出足够优秀的 这里使用 融云 就完美的解决了问题)

"lianren"项目解析(一)_第1张图片


1:三个 alipay 开头的jar包 顾名思义 是 支付宝相关的 jar 

2:support - v4  google 提供的 一般默认创建就有  值得注意的是 v4 也有版本之分 建议大家使用高版本的  bug少

3: bugly 腾讯的 对Crash的管理 和  统计 的开放平台

3:daocore  greendao  数据库映射关系的第三方库 

4:google zxing : 二维码相关jar  

5:nineoldandroids  android 开源动画库

6:RongIM_kit 融云即使通讯库

7:ShareSDK 开头的 是第三方登陆 以及 分享

8:umeng 友盟统计相关

9: ImageLoader 图片的加载 缓存等

分析完这些 jar 的作用 然后稍微在网上 查阅下 这些 jar 的用法和相关初始化   我们在 APP 看到相关陌生的代码 也大概能知道他们是起什么作用.


2:App 的 application 类的分析  

app的启动自然是 application 类 最先加载启动 我们来看看 application 中做了什么:

	private final String tag = BaseApplication.class.getSimpleName();
	private static DisplayImageOptions options;
	
	@Override
	public void onCreate() {
		init();
	}
	
	/**
	 * 初始化
	 */
	private void init(){
		//友盟session时间间隔
		MobclickAgent.setSessionContinueMillis(30*60*1000);
				
		//初始化融云SDK
        RongIM.init(this);
        RongCloudEvent.init(this);
        RongCloudEvent.getInstance().RongConnect();
        
		//初始化debug模式
		String flag = CommonUtils.getProperty(getApplicationContext(), "debug");
		if (!TextUtils.isEmpty(flag)) {
			Boolean isDebug = Boolean.parseBoolean(flag);
			NLog.setDebug(isDebug);
			NLog.e(tag, "isDebug: " + isDebug);
		}
		
		//设置默认缓存路径
		CacheManager.setSysCachePath(getCacheDir().getPath());
		
		//腾讯bugly相关
		UserStrategy strategy = new UserStrategy(getApplicationContext());
		strategy.setAppVersion(CommonUtils.getVersionName(getApplicationContext()));
		strategy.setAppReportDelay(5000);
	    CrashReport.initCrashReport(getApplicationContext() , "900001870" , true, strategy);
	    
		options = new DisplayImageOptions.Builder()
		.showImageForEmptyUri(R.drawable.ic_default_img)
		.showImageOnFail(R.drawable.ic_default_img)
		.showImageOnLoading(R.drawable.ic_default_img)
		.displayer(new FadeInBitmapDisplayer(300)) 
        .cacheInMemory(true)
        .cacheOnDisk(true)
		.build();
		
		//初始化图片下载组件
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
		.threadPriority(Thread.NORM_PRIORITY - 2)  
		.denyCacheImageMultipleSizesInMemory()
        .diskCacheSize(50 * 1024 * 1024)
        .diskCacheFileCount(200)
        .diskCacheFileNameGenerator(new Md5FileNameGenerator()) 
		.defaultDisplayImageOptions(options)
		.build();
		
		//Initialize ImageLoader with configuration.
		ImageLoader.getInstance().init(config);
	}

	public static DisplayImageOptions getOptions() {
		return options;
	}

	public static void setOptions(DisplayImageOptions options) {
		BaseApplication.options = options;
	}


简单看一下  应该是做了 友盟的初始化 融云的初始化 设置默认的缓存路径 腾讯bugly的初始化 配置了 ImageLoader 的一些参数 


		//初始化debug模式
		String flag = CommonUtils.getProperty(getApplicationContext(), "debug");
		if (!TextUtils.isEmpty(flag)) {
			Boolean isDebug = Boolean.parseBoolean(flag);
			NLog.setDebug(isDebug);
			NLog.e(tag, "isDebug: " + isDebug);
		

这段笔者太没有看太明白 还需要等待 huxinwu 老师的 指点 

未完待续.....


你可能感兴趣的:(android,技术,开发者)