开发细节备忘录

目录

目录

ADB命令

一、adb启动Activity:

二、adb关闭Activity:

三、adb启动service:

四、adb发送broadcast:

五、adb 获取权限命令

六、查看系统属性、设置系统属性

七、adb查看任意页面包名类名

八、adb截图

九、adb 操作指定设备

十、查看activity栈信息

十一、通过adb命令查看当前设备分配给一个进程的内存是多少

AS、编译相关

1、在AS中执行命令 对指定module进行打包

 2、打包时默认用名称和时间命名

其他

关于cpu架构

浅谈Android手机cpu架构适配_安卓开发-顺的博客-CSDN博客_安卓手机cpu架构

代码动态设置文件读写权限

机顶盒的启动Activity SplashActivity 断电重启会被启动两次怎么办?

git 查看远程仓库地址命令

编译报错查看更多信息

利用ARouter模拟startActivityForResult的方式并且带参数进行跳转 比如跳转到登录页面

点击返回键实现类似Home键的效果 回来后不加载splash页面

两次点击返回退出 app

监听连续多次点击

 全屏底部弹出对话框 主要是加载这个style  这个style在 EasyCommonUtils框架中

点击复制文本到剪切板

发送图片时,打开系统自带的文件系统选择图片

解析apk包名等信息

基于OK+Retrofit+Rxjava封装好的网络框架 如果获取原始json

通过查看方法调用链(Android Studio: alt + ctrl + H)


ADB命令

一、adb启动Activity:

adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}

如:启动浏览器

adb shell am start -n com.android.browser/com.android.browser.BrowserActivity

二、adb关闭Activity:

adb shell am force-stop {包(package)名}

如:关闭浏览器

adb shell am force-stop com.android.browser

三、adb启动service:

adb shell am startservice -n {包(package)名}/{包名}.{服务(service)名称}
如:启动自己应用中一个service
adb shell am startservice -n com.android.traffic/com.android.traffic.maniservice

四、adb发送broadcast:

adb shell am broadcast -a <广播动作>
如:发送一个网络变化的广播
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE

五、adb 获取权限命令

1、adb shell  --- su --- mount -o remount,rw /system

2、adb shell -- adb remount --mount -o remount /system ---- chmod 777 system --- cd system --- chmod 777 app

3、echo 1 >  /sys/class/remount/need_remount   ------- mount -o remount /system

六、查看系统属性、设置系统属性

1、adb shell

2、getprop

3、setprop xxx value 

七、adb查看任意页面包名类名

adb shell -> dumpsys activity top |grep Activity

八、adb截图

(1)adb shell screencap -p /sdcard/screen.png

(2)adb pull /sdcard/screen.png D:/KDR

九、adb 操作指定设备

adb -s 设备id xxx

十、查看activity栈信息

所有app

adb shell dumpsys activity

当前APP

adb shell dumpsys activity | grep com.xxx.xxx

十一、通过adb命令查看当前设备分配给一个进程的内存是多少

adb shell

getprop dalvik.vm.heapsize

AS、编译相关

1、在AS中执行命令 对指定module进行打包

gradlew muduleName: assembleRelease

 2、打包时默认用名称和时间命名

app的build.gradle 最外层

def releaseTime() {
    return new Date().format("yyyyMMddHHmm", TimeZone.getTimeZone("GMT+8"))
}

然后android{}里面写上

android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "app-${releaseTime()}.apk"
    }
}

其他

  1. 关于cpu架构

  2. 浅谈Android手机cpu架构适配_安卓开发-顺的博客-CSDN博客_安卓手机cpu架构

    查询手机cpu命令行:adb shell getprop ro.product.cpu.abi
  3. 代码动态设置文件读写权限

    1. String command = "chmod 644 /data/data/com.xxx.xxx/cache/tmp.ts";
      Runtime runtime = Runtime.getRuntime();
      runtime.exec(command);
  4. 机顶盒的启动Activity SplashActivity 断电重启会被启动两次怎么办?

    1. 设置启动模式 android:launchMode="singleInstance"
  5. git 查看远程仓库地址命令

    1. $git remote -v
  6. 编译报错查看更多信息

    1. Error:Execution failed for task ':test:processDebugManifest'.> Manifest merger failed with multiple errors, see logs
      但是要命的是,除了这个log,没有什么其他的有用信息了,怎么办?

      处理方式是这样的: 
      首先进入命令行,输入命令

      gradlew processDebugManifest --stacktrace
      其中,processDebugManifest是log里面提到的,这个命令是会了获取更多的log信息。

  7. 利用ARouter模拟startActivityForResult的方式并且带参数进行跳转 比如跳转到登录页面


    1. ARouter.getInstance().build("/test/login")
              .withString("key1", "FILM")
              .navigation(getActivity(), 100);

      这里100是requestCode  必须大于0 否则不生效。

      目标页面finish之前 调用setResult(resultCode,intent) 这里的resultCode 可以定义几个数 代表不同的意思 比如:
      resultCode 200 登录成功
      resultCode 400 用户取消登录(点击了返回键)
      resultCode 401 登录失败

  8. 点击返回键实现类似Home键的效果 回来后不加载splash页面

    1.  这个方法在EasyCommonUtils框架中 的APPUtil中有

      /**
       * 去桌面
       *
       * @param activity
       */
      public static void goToDesktop(Activity activity) {
          Intent intent = new Intent();
          intent.setAction(Intent.ACTION_MAIN);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //如果是服务里调用,必须加入new task标识
          intent.addCategory(Intent.CATEGORY_HOME);
          activity.startActivity(intent);
      }
  9. 两次点击返回退出 app

    1. private long exitTime;
      if ((System.currentTimeMillis() - exitTime) > 2000) {
          Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
          exitTime = System.currentTimeMillis();
      } else {
          finish();
          System.exit(0);
      }
  10. 监听连续多次点击

    1. private final int COUNTS = 3;// 点击次数
      private final long DURATION = 1000;// 规定有效时间
      long[] mHits = new long[COUNTS];
      
      
      /**
       * 连续点击多次 弹出隐藏对话框
       */
      private void continuousClick() {
          //每次点击时,数组向前移动一位
          System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
          //为数组最后一位赋值
          mHits[mHits.length - 1] = SystemClock.uptimeMillis();
          if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
              mHits = new long[COUNTS];//重新初始化数组
              Toast.makeText(this, "进入配置页面", Toast.LENGTH_LONG).show();
              ConfigDialog dialog = new ConfigDialog(this, true);
              dialog.show();
          }
      }
  11.  全屏底部弹出对话框 主要是加载这个style  这个style在 EasyCommonUtils框架中

    1. super(context, R.style.ActionSheetDialogStyle); 然后执行下面代码 WindowManager.LayoutParams params = getWindow().getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.height = WindowManager.LayoutParams.MATCH_PARENT;getWindow().setAttributes(params);getWindow().setGravity(Gravity.BOTTOM);

  12. 点击复制文本到剪切板

    1. //获取剪贴板管理器:
      ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
      // 创建普通字符型ClipData
      ClipData mClipData = ClipData.newPlainText("Label", mine_apprentice_detail_code_tv.getText().toString());
      // 将ClipData内容放到系统剪贴板里。
      cm.setPrimaryClip(mClipData);
      
  13. 发送图片时,打开系统自带的文件系统选择图片

    1. Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
      intent.setType("image/*");
      intent.addCategory(Intent.CATEGORY_OPENABLE);
      startActivityForResult(intent,1);
    2. 如果是发送文件 这里就改为 intent.setType("*/*");

      效果图:

  14. 解析apk包名等信息

    1. 使用aapt工具

    2. 在Android sdk中的\android-sdk-windows\build-tools\26.0.2(任意一个)文件下有个aapt工具,进入目录,输入命令 aapt d badging apk路径,

      即可解析得到Apk信息(包名,版本名,版本号,安装位置,sdksdkVersion,targitSdkVersion,所需权限等)。

  15. 基于OK+Retrofit+Rxjava封装好的网络框架 如果获取原始json

    1. 返回值直接用ResponseBody接收就可以了

    2. Observable<ResponseBody> xxx(......)

  16. 通过查看方法调用链(Android Studio: alt + ctrl + H)

Android开发备忘录是一种帮助开发记录和提醒开发过程中需要注意事项的工具。在日常开发中,我们经常会面临各种各样的技术细节开发规范,因此有一个备忘录可以帮助我们更好地组织和管理这些内容非常有帮助。 首先,Android开发备忘录可以用来记录常用的代码片段或者快捷方式。当我们遇到一些常见的开发任务时,只需要从备忘录中复制相应的代码片段即可,提高了开发效率和准确性。 其次,备忘录还可以用来记录常见的错误和解决方案。在开发过程中,我们难免会遇到一些错误和异常情况,有一个备忘录可以记录下来这些问题以及相应的解决方案,以便日后遇到同样的问题时可以快速解决。 此外,备忘录还可以用来记录一些开发规范和最佳实践。Android开发有一些常见的规范和最佳实践,如命名规范、代码结构、UI设计等,这些内容可以记录备忘录中,以便在开发过程中时刻提醒自己遵循规范,提高代码的可维护性和可读性。 除了以上功能,备忘录还可以用来记录一些常用的第三方库和工具,方便我们在开发过程中查找和使用。 总结来说,Android开发备忘录是一个非常有用的工具,它可以帮助开发者更好地组织和管理开发过程中的各种内容,提高开发效率和代码质量。在日常开发中,我们可以通过记录代码片段、错误解决方案、开发规范和最佳实践等内容,使得我们的开发工作更加高效和规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值