1.android junit test launcheråeclipse junit launcher çåºå«
2.AndroidAnnotation常用注解使用说明
3.å
³äºandroid设å¤çunauthorized
android junit test launcheråeclipse junit launcher çåºå«
Junitçæ§è¡ï¼æ¯ä»JunitCoreè¿ä¸ªç±»å¼å§çï¼ä¹å°±æ¯junitçrunnerï¼ä¹åè°ç¨junitCoreçrunæ¹æ³ãå¦ææ³è¦å¨æ§è¡Junitçè¿ç¨ä¸æ¶å°ç¸ä¿¡çæ示信æ¯çï¼å¯ä»¥å®ç°RunListener,源码并ä¸éè¿JunitCoreè¿è¡class,å¦ä¸ï¼If you need to respond to the events during a test run, extend RunListener and override the appropriate methods. If a listener throws an exception while processing a test event, it will be removed for the remainder of the test run.public void main(String... args) { JUnitCore core= new JUnitCore();core.addListener(new RingingListener());core.run(MyTestClass.class);}
AndroidAnnotation常用注解使用说明
AndroidAnnotations是一个开源框架,通过其提供的源码注解API,可以显著减少冗余代码量,源码使代码更简洁。源码最新版本为4.0.0,源码wiki系统php源码导入第三方库时,源码moodle 源码分析在app目录下的源码build.gradle(局部gradle)文件中添加配置如下:
gradle
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
def AAVersion = '4.0.0'
android {
compileSdkVersion
buildToolsVersion ".0.2"
defaultConfig {
applicationId "com.xxx.demo"
minSdkVersion
targetSdkVersion
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.'
compile 'com.android.support:appcompat-v7:.1.1'
*apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName "com.xxx.demo" // 你的项目包名
}
}
确保在AndroidManifest.xml中确认项目包名。
在gradle目录下的源码build.gradle文件(全局gradle)中添加配置如下:
gradle
buildscript {
repositories {
jcenter()
}
dependencies {
// replace with the current version of the Android plugin
classpath 'com.android.tools.build1.5.0'
// replace with the current version of the android-apt plugin
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4+'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
### 常用注解
#### 组件注解
java
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
// ...
}
常用的注解包括`@EActivity`、`@EFragment`、源码`@EService`等,源码被注解的源码组件才能使用其他注解功能。
#### 资源引用注解
java
@ViewById(R.id.tv_title) // 可省略括号和id
TextView tv_title;
@Extra("mTitle") // 默认名称与参数名一致时可省略括号
String mTitle;
@StringRes(R.string.hello) // 直接使用资源id
String hello;
简单的源码控件绑定,资源文件中的源码mpu dmp源码id与控件名一致时,无需在注解后加上括号及对应控件的源码id。
#### 事件绑定注解
java
@Click
void img_back() {
finish();
overridePendingTransition(R.anim.zoom_in,源码 R.anim.zoom_out);
}
还有`@TextChange`、`@ItemClick`、`@SeekBarProgressChange`等注解。ios战棋源码
### 方便的注解
#### 异步线程与UI线程
java
@UiThread
void doSomething() {
// UI线程操作
}
@Background
void doSomething() {
// 异步线程操作
}
通过这些注解,UI线程执行的方法只需标注`@UiThread`,异步线程方法标注`@Background`,两者之间的jquery源码pdf交互通过直接调用即可,无需使用Handler发送和接收Message。
#### 广播接收注解
java
@Receiver(actions = "Utils.ACTION_BLE_DISCONNETED")
public void bleDisconnect() {
// 处理断开事件
}
@Receiver(actions = "Utils.ACTION_UPDATE_WATER_SHOW")
public void updateWaterShow(@Receiver.Extra("Utils.VALUE_ADDRESS") long water) {
if (switchIsOpen) {
edt_water.setText(water + "");
}
}
注册广播接收器变得简单快捷,相比传统方式显著简洁。
#### SharedPreferences注解
java
@SharedPref(value = SharedPref.Scope.UNIQUE)
public interface MyPrefs {
@DefaultBoolean(true) boolean isFirstIn();
@DefaultString("") String ignoreVersion();
@DefaultInt(0) int shockLevel();
}
直接使用`@SharedPref`注解可以简单地使用SharedPreferences的功能。在类中声明并使用即可。
### @EBean注解
java
@EBean
public class MyClass {
@UiThread
void updateUI() {
// UI更新操作
}
}
在类名上使用`@EBean`注解,该类只能有一个无参或仅带`context`参数的构造方法。在activity等组件内声明后,无需再new该类,否则会出错。
### 总结
这些是常用的方法及说明,AndroidAnnotations框架还有更多功能。如需深入了解,建议访问官方文档查阅使用说明。
å ³äºandroid设å¤çunauthorized
ä¸å¦æ认çæandroidå¼åï¼ç¶åææºæ¿çeclipse+SDK+ADT以åç¬çµçandroid studioåå¼åç¯å¢æ¯æï¼ç¬é´æè§åºæ°å足
å 为android studioèªå¸¦çèææºç¸æºç¡¬ä»¶è°ç¨æ¯è¾ç¦äººï¼å¹¶ä¸æ²¡æåæ³è¿è¡android studioä¸çjunitæµè¯ï¼æ以åå¿ä¸ä½å ¥æäºæ¥ççS5ä¸é¨ï¼ç¶åæå¿«å¼å§äºåæµè¯ç¯å¢çåæ¢ç涯ã
å¨eclipse+SDK+ADTçæºæ¿xpç³»ç»éé¢ï¼S5æå¼å¼åè é项->æå¼usbè°è¯é项ï¼å¾é¡ºå©ç让æææºä¸ç¹å»ç¡®å®å¯é¥è¿è¡è¿æ¥ï¼ç¶åå°±å¯ä»¥ç¨adb å½ä»¤é¡ºå©æä½ææºçapkå®è£ å¸è½½å æ¥çshellç¨rootå½ä»¤ãä½æ¯è²ä¼¼è¿æ¯è¦å¨ææºä¸åç¹å»ç¡®è®¤ä¸ä¸è¶ 级æéçï¼å¦åå°±æ¯éé»æç»äºæéç³è¯·åããã
ç¶åææ¯ä¹°äºå¿«å个æçæ¶åï¼æ¢å°å®¶éç¬çµçandroid studioæ¥è¯è¯æµè¯S5çï¼ä¸»è¦æ¯æ³ç¨shellæ¥å æç¸æºçæç §æ¶åç声é³ï¼åæé¦å å°±éå°äºunauthorizedçé®é¢ï¼ç¾åº¦äºä¸ä¸ï¼usbè°è¯æ²¡ææ¯å¾å¤æ¶ååºç°è¿ç§æ åµç主è¦åå ï¼ä½æ¯æä¹åæç §åæºæ¿éé¢ä¸æ ·çæä½ï¼ä¸æ ·ç¹éäºusbè°è¯ååç¹éäºå ¬é¥æä¹å°±unauthorizedäºããç¾æä¸å¾å ¶è§£åï¼æ å¥å°±åªå¥½æå¼è¿æ¥ï¼éæ°æusbï¼éæ°ç¹éusbè°è¯ï¼çå°äºå¨è¿éçç¹éå ¬é¥çæ¬æµ®æ¡ä¸é¢æä¸è¡æ¯å¦æ¯åéæå¼ãããé¾æªäºï¼è¿ä¸æ²¡ä¸ä¼å°±æ²¡æææï¼èµ¶ç´§æè¿ä¸ªé项ç¹éäºãããææºå°±åä¹æ²¡åºç°è®¾å¤unauthorizedäº