bcoder

1月 172017
 

  在使用友盟统计的时候,我们需要在AndroidManifest.xml为每个不同的渠道设置一个渠道名称,然后修改一次打一次包,当渠道多的时候这样非常的麻烦。庆幸的是,gradle脚本有方便的方法可以实现多渠道一次打包。

  首先在AndroidManifest.xml中这样配置友盟的渠道信息:

  umeng_channel_holder相当于为gradle的脚本定义了一个变量,稍后会在gradle脚本中使用,你也可以定义成其他的名字,只要用${}括起来就可以了。

  下面我们在主gradle文件中为这个变量设置不同的配置信息,这段信息要放在android->productFlavors节点下,如下所示:

  如上代码我配置了wandoujia, baidu, xiaomi, tencent, jeoe共五个渠道,这样就配置完成了,点击Build->Generate Signed APK,在第三步的时候所选要打包的flavor就可以一次生成多个安装包了。

 Posted by on 2017-01-17
1月 162017
 

直接上代码:

 

 Posted by on 2017-01-16
1月 162017
 

  有时我们需要用户给我们的应用进行五星好评,这就需要app给用户提示信息后,自动打开app在应用市场中的详情页,那么我们可以通过下面的代码打开详情页面

  其中com.jeoe.cloudnote代表你的app的包名

  Android中获取应用市场列表的方法

 Posted by on 2017-01-16

greenDAO混淆配置

 分类:Android, Java 阅读 (1,590)  No Responses »
1月 092017
 

如果你的项目中使用了greenDAO并且使用了混淆,那么请为greenDAO增加混淆配置,如下:

官方原文地址:http://greenrobot.org/greendao/documentation/updating-to-greendao-3-and-annotations/#Step_1_Update_dependencies_to_V3

Eventbus混淆配置

 分类:Android, Java 阅读 (1,152)  No Responses »
1月 092017
 

如果你的项目使用了Eventbus并且使用混淆,那么你需要为Eventbus配置混淆,代码如下:

官方原文地址:http://greenrobot.org/eventbus/documentation/proguard/

1月 092017
 

  今天写一个shape的drawable资源,实心部分是用放射形的渐变填充的,gradientRadius属性使用的百分比值来设定,如下代码:

  在小米手上运行正常,但是在三星Note3上报java.lang.IllegalArgumentException: radius must be > 0错误,经在网上搜索后将100%改成100%p就没问题了,修改后的代码如下

 

1月 082017
 

  有的时候我们需要实现随机获取某些数据记录的功能,比如在一套题库内随机生成一组题目给学生进行考试,正常情况下我们可能会考虑通过代码实现,但是使用sqlite中提供的RANDOM()函数就可以轻松实现这样的功能 。要将Random()函数放在order by后面以达到随机排序的功能,示例代码如下:

  limit 1表示只取一条记录

  现在功能实现了,但是这样效率比较低,我们对sql语句改造如下:

  如果只想取其中的一条记录也可以把where id in替换成where id=,如下所示:

  如果大家还有效率更高的写法,欢迎留言。

  另外在MySQL中也有一个RAND()函数可以实现类似功能,在MSSQL中可以通过order by GUID来实现

1月 072017
 

  Switch组件使用了android:track属性,设置了背景图片,但是宽度显示不全,经查track属性设置的图片并未参与Switch的高度的计算,所以当track图片的高度过高时就会显示不全.

  解决办法:

  1. 给Switch组件设置一个大的字体大小值,比如textSize=”25dp”,这样整体高度就会变大
  2.  给Switch设置一个大的padding值

  相比之下博主认为第一个方法比较合理一些

 

1月 042017
 

  Android提供一个命令行工具monkey可以对安卓程序进行测试,monkey会对应用生成随机的动作流,包括点击、触摸、手势、文字录入等,模拟人工操作应用,并在发生错误后发送报告给用户。使用方法:首先在avd manager中打开一个模拟器或者使用USB线连上真机,打开命令行窗口,输入下面的命令:

  其中com.bcoder.testapp是你的包的名字,5000代表要测试的次数

  如果你的命令行中不能执行adb命令,请找度娘给你配置一下adb

  monkey支持很多参数,下面是一个详细的参数列表:

类别 参数 描述
常规 --help 打印一个简单的使用向导(确实很简单!)。
-v

每增加一个-v就会增加输出的测试信息的详细度,共分为级别0、1、2,也就是最多输入两个-v

事件 -s <seed>

此参数后边可以跟随一个数字值,这个值用于生成随机操作的种子,当你下一次再用这个种子值操作时,会重复上一次一样的操作。

比如:你执行 adb shell monkey -p com.bcoder.testapp -s 10 1000后发现了程序的一个报错

可以在修复问题后重新执行上面的命令,monkey还会按和上次一样的顺序生成随机事件

作者注:貌似不是每次的操作完全一样

--throttle <milliseconds> 为每次的事件增加一个延时,用于放慢monkey的执行速度,单位毫秒
--pct-touch <percent> 设置触屏操作所占的百分比
--pct-motion <percent> 设置划屏操作所占的百分比
--pct-trackball <percent> 设置轨迹球操作所占的百分比
--pct-nav <percent>

设置方向键操作所占的百分比

Adjust percentage of “basic” navigation events. (Navigation events consist of up/down/left/right, as input from a directional input device.)

--pct-majornav <percent>

设置back键、menu键所占的百分比

Adjust percentage of “major” navigation events. (These are navigation events that will typically cause actions within your UI, such as the center button in a 5-way pad, the back key, or the menu key.)

--pct-syskeys <percent>

设置系统键所占的百分比

Adjust percentage of “system” key events. (These are keys that are generally reserved for use by the system, such as Home, Back, Start Call, End Call, or Volume controls.)

--pct-appswitch <percent>

Adjust percentage of activity launches. At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing coverage of all activities within your package.

--pct-anyevent <percent> Adjust percentage of other types of events. This is a catch-all for all other types of events such as keypresses, other less-used buttons on the device, and so forth.
约束 -p <allowed-package-name>

指定一个或者多个包进行测试,比如-p com.bcoder.testapp,如果要指定多个包进行测试就要使用多个-p参数,比如adb shell monkey -p com.bcoder.testapp -p com.bcoder.testapp2 1000

If you specify one or more packages this way, the Monkey will only allow the system to visit activities within those packages. If your application requires access to activities in other packages (e.g. to select a contact) you’ll need to specify those packages as well. If you don’t specify any packages, the Monkey will allow the system to launch activities in all packages. To specify multiple packages, use the -p option multiple times — one -p option per package.

-c <main-category> If you specify one or more categories this way, the Monkey will only allow the system to visit activities that are listed with one of the specified categories. If you don’t specify any categories, the Monkey will select activities listed with the category Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY. To specify multiple categories, use the -c option multiple times — one -c option per category.
调试 --dbg-no-events When specified, the Monkey will perform the initial launch into a test activity, but will not generate any further events. For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey running for 30 seconds or more. This provides an environment in which you can monitor package transitions invoked by your application.
--hprof If set, this option will generate profiling reports immediately before and after the Monkey event sequence. This will generate large (~5Mb) files in data/misc, so use with care. See Traceview for more information on trace files.
--ignore-crashes

正常情况下,当测试遇到应用崩溃时,monkey就停止测试,如果使用了此参数,monkey将继续给系统发送事件直到运行完count所设定的值。

Normally, the Monkey will stop when the application crashes or experiences any type of unhandled exception. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

--ignore-timeouts

正常情况下,当遇到ANR错误时,monkey就会停止测试,加上此参数后,monkey将会继续进行测试直到运行完所设定的count值。

Normally, the Monkey will stop when the application experiences any type of timeout error such as a “Application Not Responding” dialog. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

-f

指定测试脚本文件,示例文件见文末尾

如:adb shell monkey -v -v -f /mnt/sdcard/monkey_click.txt 1000

--ignore-security-exceptions

同上,忽略安全性异常错误。

Normally, the Monkey will stop when the application experiences any type of permissions error, for example if it attempts to launch an activity that requires certain permissions. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

--kill-process-after-error Normally, when the Monkey stops due to an error, the application that failed will be left running. When this option is set, it will signal the system to stop the process in which the error occurred. Note, under a normal (successful) completion, the launched process(es) are not stopped, and the device is simply left in the last state after the final event.
--monitor-native-crashes Watches for and reports crashes occurring in the Android system native code. If –kill-process-after-error is set, the system will stop.
--wait-dbg Stops the Monkey from executing until a debugger is attached to it.

 

-f参数脚本示例

注意事项:

  1. count参数一定要放到最后面
1月 032017
 

两台网络中的Linux主机可以通过scp命令传输文件或者文件夹。

假设本机为A,目标机器192.168.0.100为B,传输A的code.zip文件到B的机器上的命令为

如果要将A机器上的projects的整个目录拷贝到B,则加个-r参数即可,如:

如果传输失败,请用ping命令看两台机器网络连接是否正常,或者目标机器的防火墙是否没有关闭

 Posted by on 2017-01-03  标签: