[关闭]
@Gebitang 2015-08-19T03:39:09.000000Z 字数 4416 阅读 2924

Android 问题记录

android


收集Android开发相关问题


生成签名文件

keytool -genkey -alias gebitang -keyalg RSA -validity 20000 -keystore joe123_android.keystore

  1. F:\>keytool -genkey -alias gebitang -keyalg RSA -validity 20000 -keystore gebita
  2. ng.keystore
  3. #密钥库口令 = storepass
  4. 输入密钥库口令:
  5. 再次输入新口令:
  6. 您的名字与姓氏是什么?
  7. [Unknown]: Joechin
  8. 您的组织单位名称是什么?
  9. [Unknown]: Lee
  10. 您的组织名称是什么?
  11. [Unknown]: Gebitang
  12. 您所在的城市或区域名称是什么?
  13. [Unknown]: Beijing
  14. 您所在的省/市/自治区名称是什么?
  15. [Unknown]: Beijing
  16. 该单位的双字母国家/地区代码是什么?
  17. [Unknown]: CN
  18. CN=Joechin, OU=Lee, O=Gebitang, L=Beijing, ST=Beijing, C=CN是否正确?
  19. [否]: Y
  20. # aliaspass 签名密码
  21. 输入 <gebitang> 的密钥口令
  22. (如果和密钥库口令相同, 按回车):
  23. 再次输入新口令:
  24. F:\>

验证签名是否成功:

  1. F:\Eclipse>jarsigner -verify record.apk
  2. jar 已验证。
  3. 警告:
  4. jar 包含证书链未验证的条目。
  5. jar 包含的签名没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2070-05-2
  6. 2) 或以后的任何撤销日期之后, 用户可能无法验证此 jar
  7. 有关详细信息, 请使用 -verbose -certs 选项重新运行。
  8. F:\Eclipse>

命令参数说明:
-genkey 产生证书文件
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法
-validity 为证书有效天数,这里我们写的是20000天。
-alias 产生别名
在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,切忌需要记下来后面还要用,


利用adb向手机发送文件/提取文件

从手机里取文件adb pull /mnt/sdcard/path/to/file local
向手机复制文件adb push localfile /mnt/sdcard/path/to/save
命令之后直接跟操作的对象,然后是操作的参数。
pull拉回文件,操作的对象是被拉回的文件;
push推送文件,操作的对象是本地的被推送文件;


解决Perf问题 ——HTR & TA 11:24
发送broadcast时传参形式错误 int类型传成了string; --ei 为int类型参数;--es 为string类型参数
特殊情况,小米4将menu键:短按——显示最近任务;长按:显示menu

不在后台最近任务显示

不是后台任务列表,应该是最近任务列表,已经找到方法了,在配置文件里面 activity里面加入一句:android:excludeFromRecents="true" 就可以实现让应用不在最近任务列表显示了


添加源码


BroadcastReceiver 和 Services使用

  1. <receiver android:name="BootBroadcastReceiver">
  2. <intent-filter>
  3. <action android:name="android.intent.action.BOOT_COMPLETED"></action>
  4. <category android:name="android.intent.category.LAUNCHER" />
  5. </intent-filter>
  6. </receiver>
  1. public class BootBroadcastReceiver extends BroadcastReceiver{
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. Log.e("TAG", "开机自动服务自动启动.....");
  5. //后边的XXX.class就是要启动的服务
  6. Intent serviceIntent = new Intent(context, MyGpsService.class);
  7. context.startService(serviceIntent);
  8. //或者启动activity
  9. Intent activityIntent = new Intent(context, MessageActivity.class);
  10. //要想在Service中启动Activity,必须设置如下标志
  11. activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  12. context.startActivity(activityIntent);
  13. }
  14. }

注:服务不能自己运行。需要通过调用Context.startService()或Context.bindService

startService():调用者与服务之间没有关联。系统先调用服务的onCreate()方法,接着调用onStart()方法。多次调用startService()方法并不会导致服务多次被创建,但会多次调用onStart()方法。并用Context.stopService()方法结束服务,服务结束时调用onDestroy()方法。

bindService():调用者与服务绑定在一起“不求同时生,必须同时死。”系统调用服务的onCreate方法接着调用onBind()方法。这时调用者与服务绑定一起调用者退出时先调用服务的onUnbind()方法,接着调用onDestroy()方法。多次调用bindService()方法并不会导致调用者与服务多次被绑定。


MI4越狱手机:

  1. 下载完整Flash包:http://www.miui.com/shuaji-393.html
  2. 下载安装MiFlash工具。
  3. USB连接后,打开MiFlash工具无法识别手机。需要将手机重启到Fastboot状态(同时按住音量下+电源键进入Fastboot模式),然后在刷新刷机工具。
  4. 选中刷机包位置,操作即可。

导入adroid工程出现:unable to get system library for the project

修改project.properties,将版本调高,再调回来。然后重新build一下过程即可。


查看logcat内容

  1. 清除缓存的log: adb logcat -c
  2. 操作程序;
  3. 获取log日志:adb logcat -d > D:/loginfo.txt
    日志级别(V-verbose,D-debug,I-info,W-warning,E-error,F-fatal,S-silent)

Android 工程提示R can't resolve;无法自动生成R.java文件;无法创建新工程

可能是Android环境配置出现了问题,最好是利用在线工具更新一下(需翻墙)。


重新自定义apk程序图标

工程树图夹下的AndroidManifest.xml就是工程的参数项,双击将出现工程的参数管理,其中Application栏中Icon项:@drawable/ic_launcher,点它的Browser可以三种方式产生工程图标;Create New Icon就是产生图标的向导。


导入adroid工程出现:unable to get system library for the project

修改project.properties,将版本调高,再调回来。然后重新build一下过程即可。


查看下载的android源码的版本

下载android源码
cd .repo/manifests
git branch -av
可以找到当前branch版本的哈希值和远端各版本哈希值

Android 启动过程详解

获取Android设备唯一标识码
How to retrieve the Device Unique ID from android device


ADB源码分析

android2.3-adb源码分析
android adb adbd analyse


adb devices没有返回设备

缺少驱动。安装91助手或驱动精灵来自动安装缺少的驱动程序。
adbdevices找不到设备
Adb驱动装但adbdevices找不到设备


Android SDK下载地址

aapt即Android Asset Packaging Tool
更新链接
链接一
链接二

adb server is out of date killing

来源一来源二
关闭杀毒程序,如新毒霸(sjk_daomon.exe占用了adb使用的5307端口,使得adb命令没有响应)

详细:
执行adb devices返回:

  1. adb server is out of date. killing...
  2. ADB server didn't ACK
  3. * failed to start daemon *
  4. error: unknown host service



添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注