在Android模拟器中模拟GPS位置

IT

配置Telnet服务

  1. 添加Telnet服务

    操作过程:点击”开始”→”控制器面板”→” 查看方式:类型”则点击”程序”(”查看方式:大图标”则点击”程序和功能”)→ “启动或关闭windows功能”→ 在”Windows功能”界面勾选Telnet服务器和客户端 →最后点击”确定”等待安装。

Android录音冲突

IT

在使用Android的录音功能时会遇到和其他录音应用冲突的问题,比如其他应用录音时启动自己的录音功能会报错,自己的应用如何配合其他录音应用,何时放弃录音权限,何时能获取

  1. Android系统中如果有一个应用在录音,你在调用AudioRecord startRecording方法开启录音是会报错,此时,可以通过方法AudioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING,来判断自己的应用是否可以正常录音

Git只更新服务器修改不上传本地修改

IT

在使用Git的时候会遇到本地有一个需要长久的修改,但是不想提交到服务器,但是又想服务器上文件有更新时能同步到本地,这时我们可以使用如下的命令。

忽略文件本地修改

1
git update-index --skip-worktree <file>

撤销忽略

1
git update-index --no-skip-worktree <file>

从JNI到JNA

IT

JNI

简介

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通讯(主要是C&C++)。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库与硬件、操作系统进行交互,或者为了提供程序的性能。

使用流程

1
JNIExport jstring JNICALL Java_com_example_hellojni_MainActivity_stringFromJNI( JNIEnv* env,jobject thiz ) 

jstring 是返回值类型
Java_com_example_hellojni 是包名
MainActivity 是类名
stringFromJNI 是方法名

其中JNIExportJNICALL是固定保留的关键字不要修改

Git stash用法

IT

git stash 用于缓存当前修改,并且回到最后一次提交状态(切换到HEAD)的操作

相关命令

  1. git stash 用于缓存当前修改,等同于git stash save
  2. git stash list 查看提交的记录
  3. git stash pop 恢复缓存堆栈中最新的一次提交
  4. git stash apply 恢复缓存中所有的提交
  5. git stash drop 后面可以跟着stash名字,移除缓存
  6. git stash clear 删除所有缓存
  7. git stash show 后面可以跟着stash名字显示diff,添加-p或–patch可以查看详细的diff

暂存未跟踪或忽略的文件

Android的尺寸单位

IT

在Android开发过程中总会遇到各种尺寸单位(px、dp、dpi)使用和图片文件夹(mdpi、hdpi)存放问题,在此就一些基本概念做一个总结的介绍,以期对此有个充分的认识

Android中的尺寸单位

以荣耀6 plus的屏幕参数作为例子

honor 6 plus参数

英寸(inch) 1 inch = 2.54 cm

主屏尺寸:也就是显示屏幕对角线的距离(英寸)

主屏分辨率:1920x1080像素表示屏幕高度上有1920个像素点,宽度上有1080个像素点

屏幕像素密度:dpi(dots per inch),意思是,对角线每英寸的像素点的个数,计算公式如下:

这段时间React Native学习

IT

前段时间部门组织架构调整,本人有幸被分配到技术平台。而开始的第一个任务就和React Native有关,在任务处理期间就技术方面学习了很多很多,因为RN对我来说有一个长长技术栈要了解要学习

之前一直专注于Android端开发,你要说我没有Web前段的基础也不尽然,在大学期间自学过前段三剑客HTML、CSS、JS,不过也就是学学罢了没有一点实际经验,再说也过了五六年。光阴如梭,紧急补了一下三剑客方面的知识。还好各种语言的语法基本都是通的,JS又是脚本语言,学来也不算费事。再此基础上学习了ES6、React、React Native基础知识,就开始动工参与RN实际的项目了。

Android-jenkins自动构建属性配置

IT

Android项目在使用jenkins自动构建过程中,一个比较常用的情况是需要对构建的变体进行选择生成。结合之前读的《巧用Gradle构建Android应用》和网上的一些资料,解决了我在实际项目遇到的两种情况,现记录如下

选择是否隐藏安装图标

在实际项目中我们可能需要构建一些小的变动的不同版本,比如生成的Apk在安装之后不需要显示桌面图标(只供第三方调用)。

  1. 在项目根目录的gradle.properties文件配置一个属性HAS_LANCHER=true用于决定是否需要隐藏图标,内容如图:

Android Gradle构建类型和定制

IT

处理构建类型

Gradle的android插件默认支持两种不同类型的构建类型:debug和release。可以通过模块构建文件中的buildTypes定制配置。

1
2
3
4
5
6
7
8
9
10
11
buildTypes {
release {
minifyEnabled true
shrinkResource true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-debug'
}
}

通过在debug构建类型中配置applicationIdSuffix和versionNameSuffix可以在同一台设备上安装发布版本和调试版本

另外一个构建类型属性debuggable,调试构建类型自动设置为true,其他类型默认为false。

产品定制和变种

定制允许构建同一个App的多个版本,可以使用productFlavors来声明定制产品

1
2
3
4
5
6
7
8
9
10
android {
productFlavors {
arrogant {
applicationId 'xxxx'
}
friendly {
applicationId 'xxxxxx'
}
}
}

Android Gradle发布配置

IT

设置项目属性

  1. Gradle构建文件支持用一个简单的ext(extra)语法定义属性,一次定义全局使用
1
2
3
4
5
6
7
ext {
def AAVersion = '4.0-SNAPSHORT'
}

dependencies {
compile "org.androidannotations:androidannotation-api:$AAVersion"
}
  1. 另外可以使用gradle.properties配置属性
1
2
login='user'
pass='xxxxx'
1
2
3
4
5
6
7
8
9
repositories {
maven {
url 'xxxxxxxx'
credentials {
username login
password pass
}
}
}

也可以通过命令行提供变量
./gradlew -Plogin=name -Ppass=xxxxx assembleDebug