沒有源碼的情況:
在手機上需要裝2個包:bin目錄下的apk包,和將重新簽名過的測試包一起裝到手機中,即可運行
Permission Denial解決辦法:
Test run failed: Permission Denial: starting instrumentation ComponentInfo{com.mobile17173.game.test1_2/android.test.InstrumentationTestRunner} from pid=6762, uid=6762 not allowed because package com.mobile17173.game.test1_2 does not have a signature matching the target com.mobile17173.game
Permission Denial:該原因是沒有將包重新簽名
ADB server didn't ACK解決辦法:
殺掉任務管理器中所有的手機助手進程:tadb.exe(騰訊)、wandoujia.exe(豌豆莢)、sjk_daemon.exe(金山) and so on....
重啓eclipse即可
clickOnView 點不中的原因可以解決了,如果不想改源碼,那麼就只能 使用320*480的adv就能點中。
或者修改 manifest.xml文件 加入<supports-screens android:anyDensity="true"/>
就可以在任一分辨率都可以支持了
manifest.xml文件 加入<supports-screens android:anyDensity="true"/>
反射相關:
http://hejianjie.iteye.com/blog/136205
1.在運行時判斷任意一個對象所屬的類
2.在運行時構造任意一個類的對象
3.在運行時判斷任意一個類所具有的成員變量和方法(通過反射甚至可以調用private方法)
4.在運行時調用任意一個對象的方法(*****注意:前提都是在運行時,而不是在編譯時)
//獲得對象的類型
Class classType=obj.getClass();System.out.println("該對象的類型是:"+classType.toString());
//通過默認構造方法去創建一個新的對象,getConstructor的視其參數決定調用哪個構造方法
Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
//獲得對象的所有屬性
Field[] fields=classType.getDeclaredFields();
for(int i=0;i
//獲取數組中對應的屬性
Field field=fields[i];
setup判斷
如果啓動後的界面是訂閱,則不用setup,否則setup
setup(){
if(!activity.equals("訂閱頁")){
super.setup();
}
}
紅米不能adb解決:
方案:在手機上安裝:ViewServer.apk
注意:需要一直在手機後臺開着。
開啓ViewServer服務的ViewServer.apk在哪裏下載?各市場里居然沒有。。那麼就自己編譯一個吧。
android源代碼下載地址:
http://pan.baidu.com/s/1sjIulYl
提取碼:wrc8
注意:下載列表包含源碼,和可安裝的apk,能夠直接使用。
View Hierarchy不能啓動的原因
To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system
即:出於安全考慮,Hierarchy Viewer只能連接Android開發版手機或是模擬器(準確地說,只有ro.secure參數等於0且ro.debuggable等於1的android系統)。
Hierarchy Viewer在連接手機時,手機上必須啓動一個叫View Server的客戶端與其進行socket通信。而在商業手機上,是無法開啓View Server的,故Hierarchy Viewer是無法連接到普通的商業手機。
1 |
public boolean startViewServer( int port)
{ |
2 |
if (isSystemSecure())
{ |
3 |
return false ; |
4 |
} |
5 |
6 |
if (!checkCallingPermission(Manifest.permission.DUMP, "startViewServer" ))
{ |
7 |
return false ; |
8 |
} |
9 |
.... |