软技能,代码之外生存指南读后感

最近读了软技能这本程序员写的非程序方法的书,更加坚持我的一些东西,对我思想上有了某些启示,更加笃定生活必须得多姿多彩。

作者书中在书中对理财投资,时间管理,工作计划,锻炼身体,学习方法,健康饮食,自我营销等阐述了自己的观点,作者做到35岁退休,过自己自由的生活,为理想而编程。

程序员最大短板就是不爱沟通,缺乏自信,没有做到最佳的自我营销,比如在找工作没有达到满意的薪水、没有广大的社交圈等。作者在书中对这些短板给出了好的方法借鉴。

习惯可以改变一个人,让好的习惯坚持下去吧!

华为UI Android7.0体验

华为系统昨天更新了android7.0 期待了很久,整体更新2g的包大小,UI图片体验更好,通知栏变化很大,消息通知可以显示更多的信息,小工具隐藏一行,下拉展示更多,应用分屏显示,键盘优化,有点类似苹果键盘,带圆角,用起来交互性更强。设置系统里面的功能设置较以往版本操作性更强,重要功能设置能清洗可见,流量管理,双卡设置等。

总的来说此次更新功能和体验上都是非常棒的,更多新的东西在使用中慢慢发现吧!

Android项目针对libs(armeabi,armeabi-v7a,x86)进行平台兼容(转载)

1.Android设备如何加载.so文件?
不同CPU架构的Android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找,如果已经有对应的目录,但是如果没有找到对应的.so文件,也不会去armeabi下去寻找了。
以x86设备为例,x86设备会在项目中的 libs文件夹寻找是否含有x86文件夹,如果含有x86文件夹,则默认为该项目有x86对应的so可运行文件,只有x86文件夹而文件夹下没有so,程序运行也是会出现find library returned null的错误的;如果工程本身不含有x86文件夹,则会寻找armeabi或者armeabi-v7a文件夹,兼容运行。以armeabi-v7a设备为例,该Android设备当然优先寻找libs目录下的armeabi-v7a文件夹,同样,如果只有armeabi-v7a文件夹而没有 so也是会报错的;如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so,但是不能兼容运行x86的so。所以项目中如果只含有x86的so,在armeabi和armeabi-v7a也是无法运行的。以上就是不同CPU架构运行时加载so的策略。

2.对于不同的平台,我们应该怎么去进行适配?
目前主流的Android设备肯定是armeabi-v7a架构的,然后就是x86和armeabi了。如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,但是同时也会导致包变大。
armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要指出的是,打出包的x86的so,总会比armeabi平台的体积更小,对于性能有洁癖的童鞋们,还是建议在打包so的时候支持x86。

3.如果第三方没有提供对应平台的.so文件怎么办?
有一些第三方的类库只提供了armeabi下的.so文件,如果我们项目里适配了armeabi-v7a和x86,如果不在对应的文件下放对应的.so文件,就可能导致某些Android设备会出一些问题,我们可以复制armeabi下得.so文件到不同的文件夹下。如果第三方提供了不同平台的.so文件,则复制不同平台的.so文件到项目中对应的文件夹下即可。

阿里云直播推流无法预览的问题

最近做阿里云直播,阿里云直播的so文件只有armeabi-v7a的cpu处理器的,导致其它处理器有时候会读取armeabi处理器的情况(奇怪的问题),这样的话 预览推流,有时候会出现ANR的情况。

解决办法:

libgnustl_shared.so  libqupai-media-jni.so  libqupai-media-thirdparty.so

把armeabi-v7a下面的 复制一份到armeabi的下面,这样就可以解决这个问题。

applicationId和package不一样导致微信分享失败

android studio 这个工具才上手,有些东西还没有细细的研究,这几天做了一个分享的功能,集成的是三方的ShareSDK, 在做微信分享的时候,总是分享失败,签名都是正确的,但是下了微信官方的签名生成工具,并没有获取到签名信息,怀疑是不是打包的签名和run签名是否是一致的?

我签名配置如下:

//配置keystore签名
signingConfigs {
    debugtest {
        keyAlias '*'
        keyPassword '*****'
        storeFile file('/Users/abai/*/*.jks')
        storePassword '123456'
    }
}
buildTypes {
    release {
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.debugtest
    }
    debug {
        debuggable true
        signingConfig signingConfigs.debugtest
    }
}

并没有错,直接运行签名已经配置正式签名。

解决方式一:

最后发现  applicationId 与 package 不一样(我这里微信注册的包名是package来获取签名的,因为gradle构建的应用,applicationId默认和package不一样,eclipse默认是一样得没有这两个区分),导致没有权限启动微信广播分享,就是获取的签名和公众号的签名不一致,我把 applicationId 修改成package一样得值,run 分享成功。 不熟悉工具导致奇葩问题,希望看到的小伙伴能帮助你解决此类问题。

解决方式二:

将微信注册包名为applicationID 来获取签名,这样就可以 package和 applicationID 隔离。

下面转载了 applicationid 和 package 区别:

首先我们要明白applicationId的含义是什么,applicationId在Android系统中是作为应用的唯一标识,即在一个Android设备中所有的应用程序的applicationId都是唯一的。这意味着,一旦你已发布的程序使用了这个applicationId,你就无法再修改它。如果修改了,那么这个应用程序就会被系统当作是一个全新的应用程序,和你之前的应用程序是相互独立的。
我们看一下清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.test.app"
    android:versionCode="1"
    android:versionName="1.0" >
在这我们需要注意一下,在eclipse中是没有applicationId这个概念的,在elcipse中applicationId即等同于package name,也就是我们清单文件中声明的package,它是作为一个应用的唯一标识。而在android studio中将这两个概念进行了隔离,我们可以在gradle文件中配置applicationId作为应用的唯一标识,假如没有在gradle中进行相应配置,那么applicationId就会默认为package name,不过我们一般会进行配置。所以package name在android studio中理解为一个查询类的路径比较合理,因为我们在配置四大组件的时候,name是可以缩写的,而package name就是我们可以省略的部分。

需要注意的是,我们在进行开发的时候,用到的一些三方sdk()需要我们的包名,这的包名指得是applicationId而并非package name,当然在eclipse中也就没有区分了,因为它只有package name。

运动起来骚年

2017年第一次跑步,穿上行头,慢步在大学跑道上,冥想乱七八糟的事情,也是一种悠闲自得。

好久没有跑步了,最近突发调理自己身体,还是拾起跑步这项运动,这一年多带小孩虽然没有照顾很多,还是一天忙得晕头转向,也没有太多的时间做别的事情。 最近身体感觉欠佳,周末还是准备透透气,出出汗水。

最近看了软技能这本书,对我思想上产生了一定影响,做任何事情坚持就一定有成效,动起来吧骚年!!!

正确理解解决方案的重要性

在工作中,遇到很多棘手的问题,比如在集成三方SDK的时候遇到的一些问题,首先要仔细阅读文档,一般SDK有官方的DEMO,仔细研究DEMO例子,而不要忽略看一通,在使用过程中遇到问题总是埋怨是三方的问题,其它很多时候就是自己本身的问题,把问题抛给别人,这种程序员的素养值得很大的提高。

最近在做一个直播的SDK 使用的阿里云,同事在左IOS的时候由于横竖屏的问题卡住了,我不了解IOS,但是他们提出的方案是让其它的5个端来根据不同的参数来处理,ios推出的横屏翻转解决方案,我是拒绝的,我觉得这种方案是最低级的,肯定还有其它的优美解决方案,可以探索。

解决方案就是让在开发的过程中遇到的问题,优雅的解决方式,而不是为了解决而解决,坚决抵制,为达到目的采用低劣的方式。这种都跟自己得工作经验,学习程度,视野范围都有很大关系,所以在工作中,要不断的提高自己,深入原理,才能用正确的方式解决问题。

生活要规律,你的身体不是自己的。

昨天准备去买点菊花什么的,上班喝,主要最近脸上冒了很多的豆豆,调理一下自己的身体。当医生给我抓药的时候,看了一下我的脸色,觉得非常的差,不是喝菊花就能解决的问题,看我的舌苔,耳朵,手心,背心,额头都一一说出了我目前身体存在的一些问题,晚上浅睡,睡眠不好,脾不好,肝胀排毒也不好,导致这些的主要原因还是睡觉质量不好,导致代谢系统紊乱,才出现这些身体信号,医生给开了一些药,全是粉末,什么西洋参,石斛等,都是比较贵的,花了1600多,抓了20天的计量,昨晚开始实施我的调养身体计划,11点入睡,但是还是睡不着,迷迷糊糊的,还是慢慢坚持,要坚持运动才行,身体是三分治疗,七分养。

保持良好的作息时间,良好的心态,拥有健康的身体是很重要的,对你、家人。把自己照顾好你才有能力去照顾别人,而不要给家人增加额外的负担。

 

抱怨是一种消极的心态,在工作中,遇到问题首先的第一反映就是胡乱的自言自语,一通抱怨,这样导致自己工作不开心,或者严重影响旁边的他人。

在刚出来工作的时候,遇到问题也是经常抱怨,没有仔细分析问题,就开始拒绝接受,客户反应的问题,感觉不是自己得心应手的时候也是爱理不理,这种心态是及其不负责任的表现,生活中也是如此。这种习惯要克制,改正。

我的一个同事,在处理问题的心态,我学习了很多,沉着冷静,善于思考,发散思维,我们一起工作五年,包括我们创业三年多,他影响了我在工作中的态度,积极向上,虽然现在会偶尔有抱怨的心态,单总要提醒自己,保持良好心态。

有一个健康的心态在工作中非常重要,原理抱怨,遇到问题化繁为简,思考才是解决问题的唯一途径。