Archive

Author Archive

iOS开发之Objective-c的SHA224/SHA256/SHA384/SHA512加密算法的实现

August 26th, 2014 No comments

之前在博文中实现的SHA1的安全性已经满足不了用户需求,今天把SHA224/SHA256/SHA384/SHA512的实现一并附上。
SHA即Secure Hash Algorithm(安全散列算法)有多种不同位数的实现,常见的有SHA224/SHA256/SHA384/SHA512等

SHA224:

- (NSString*) sha224
{
    const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithBytes:cstr length:self.length];
 
    uint8_t digest[CC_SHA224_DIGEST_LENGTH];
 
    CC_SHA224(data.bytes, data.length, digest);
 
    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA224_DIGEST_LENGTH * 2];
 
    for(int i = 0; i < CC_SHA224_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];
 
    return output;
}

Read more…

[Android]使用android-junit-report.jar导出单元测试报告

July 18th, 2014 3 comments

Android在使用脚本编译和测试时,使用默认的testrunner不会输出文件类型的单元测试报告,每次只能分析logcat的无法直观的看到单元测试结果和报告,这给编写自动化脚本带来了不少麻烦,虽然可以自己动手编写支持junit测试报告输出的TestRunner,但是比较麻烦。除此之外,有一个android-junit-report.jar的开源包可以拿来使用,使用方法也很简单,输出的单元测试报告也可以为多种报告分析工具分析。具体使用方法如下:

这里假设Android APP的包名为com.xxx.xxx
方法1:使用Eclipse IDE方式
1.下载android-junit-report.jar并将其导入到Android测试项目的libs中
2.打开Android测试项目的AndroidManifest.xml文件,找到

<instrumentation 
      android:name="android.test.InstrumentationTestRunner"
      android:targetPackage="com.xxx.xxx"></instrumentation>

修改为

<instrumentation 
      android:name="com.zutubi.android.junitreport.JUnitReportTestRunner" 
      android:targetPackage="com.xxx.xxx"></instrumentation>

3.运行Junit测试
4.使用ADB方式获取单元测试报告

adb pull /data/data/com.xxx.xxx/files/junit-report.xml

Read more…

Categories: 零敲碎打 Tags: ,

[Android]升级SDK tools后ant自动编译脚本错误

July 18th, 2014 No comments

Android SDK Tools在升级到Version22之后,原来的ant自动编译脚本运行出现错误,导致为Jenkins配置的批处理脚本无法执行,一直发送错误邮件,经过调查后发现,Android SDK Tools升级后文件和目录结构发生了变化,主要包括以下
1.Android SDK Tools 22之后的版本中tools目录中将不包含

  • tools\zipalign.exe
  • tools\sqlite3.exe

以上两个文件,但是文件对应移动到了各自的platform-tool和build-tools下面,对应路径如下

  • build-tools\android-xx\zipalign.exe
  • platform-tools\sqlite3.exe

如果需要使用时,需要手动复制到tools下,或者放到PATH变量中去。
Read more…

Categories: 零敲碎打 Tags: , ,

[iOS]使用Dropbox的https外链OTA部署APP

May 6th, 2014 3 comments

iOS7.1之后使用OTA方式部署时,强制使用SSL加密方式传送ipa文件和plist文件,但是服务器使用https的话需要支付一定的费用购买SSL证书,国内使用OTA方式发布ipa文件的开发者大部分使用的时http方式,http方式在iOS7.1就失效了。如果对发布的环境要求不高,使用Dropbox作为存储空间方式发布是不错的选择,并且Dropbox是支持https的,而且是浏览器地址栏显示为绿色,最安全的EVSSL。
Read more…

Categories: 零敲碎打 Tags: ,

[iOS]UIWebView禁止前进和后退

May 6th, 2014 No comments

使用HTML5+Native方式开发APP时,需要禁用掉UIWebView前进和后退功能,可以使用以下三种方式实现,三种方法同时使用亦可。
1.APP内使用native代码修改UIWebView功能禁止。
直接覆盖UIWebView返回判断功能,前进亦可在此处禁止

@interface UIWebView(no_back_forward)
- (BOOL) canGoBack;
- (BOOL) canGoForward;
@end
 
@implementation UIWebView(no_back_forward)
- (BOOL) canGoBack
{ 
    return NO;
}
- (BOOL) canGoForward
{
    return NO;
}
@end

Read more…

Categories: 语言编程 Tags: , ,

[iOS]7.1使用OTA部署APP出现Cannot install applications错误

April 28th, 2014 1 comment

iOS升级到7.1之后,之前一直使用正常的OTA部署的网站在安装APP时报出了以下错误

Cannot install applications because the certificate for www.example.com is not valid

而在7.0和之前的版本上没有这类问题,经过调查得知iOS7.1以后强制使用https安全连接方式才能正常部署,OTA部署用plist文件和ipa文件的URI必须以https方式开头,而7.1之前使用http即可,影响范围包括企业内部署使用的Ad-HOC和InHouse方式。
Read more…

Categories: 零敲碎打 Tags:

[iOS]UILabel取消自动Trim空格和换行等空白字符

April 16th, 2014 No comments

iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(\0x20)和制表符(\t)之外,全角空格(\u3000)也被计算在内,甚至连多余的换行符(\r,\n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化了之后,往往不能满足一些本可以简单实现的需求。

Read more…

Categories: 语言编程 Tags: ,