- 博客(33)
- 收藏
- 关注
原创 MakeFIle学习3-Android的MakeFile基础
3.Android的makefile基础Android.mk是什么Android.mk是一个向AndroidNDK构建系统描述NDK项目的GNU的Makefile片段。主要用来编译生成以下几种:APK程序:一般的Android应用程序,系统级别的直接push即可Java库:Java类库,编译打包生成的JAR文件C C++应用程序:可执行C C++应用程序C C++静态库:编译生成C ...
2019-11-03 17:01:09 324 1
原创 MakeFile学习2-语法
makefile语法什么是makefilemakefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要重新编译,如何进行链接等操作。makefile就是自动化编译,告诉make命令如何编译和链接makefile里有什么makefile 包含以下五个:显示规则隐晦guize变量定义文件指示注释makefile规则target ... : prerequisi...
2019-11-03 16:59:41 353
原创 MakeFile学习1-原理
1.静态库用于动态库原理和编译流程编译分为四大过程预编译编译汇编链接预编译完成宏替换、文件引入,以及去除空行,注释等,为下一步编译做准备。也就是对各种预编译命令做处理,包括头文件的包含,宏定义的拓展、条件编译的选择等。选项-E让gcc在预处理结束后停止编译,test.i文件为预处理后的输出文件gcc中可以通过-o 来指定输出文件#test.c文件内容#include &l...
2019-11-03 16:58:46 174
原创 Shell脚本编写与执行编译ffmpeg库
7.Shell脚本编写与执行编译ffmpeg库ffmpeg是什么ffmpeg是一套开源免费跨平台的多媒体框架,他提供了录制,转换以及流化视屏的完整方案ffmpeg是一套可以用来记录,转换数字音频,视频并且能将其转化为流的开源计算机程序ffmpeg是一个多媒体处理工具,有非常强大的功能,包括视频采集功能,视频格式转换,视屏抓图,给视屏加水印等。组成部分FFmpeg工具ffmpeg...
2019-11-03 16:57:07 772
原创 Shell方法参数传递机制详解
6.方法参数传递机制详解函数介绍Linux Shell 中的函数和大多数语言的函数一样将相似的任务或者代码封装到函数中,供其他地方调用第一种形式name(){command;command;}第二种形式[ function ] funnane[()]{ action; [return int;]}其中 [] 中的内容是可选的例子...
2019-11-03 16:56:32 780
原创 Shell重定向
5.语法(重定向)04Linux 输出目的地显示器文件Linux 文件描述符标准输入 standard input 0 默认设备键盘标准输入 standard output 1 默认设备显示器错误输出 error output 2 默认设备显示器重定向你可以从显示器获取输入也可以输出到显示器我们把来源称之为重定向到xxx输出重定向 >输入重定向 <...
2019-11-03 16:56:02 139
原创 Shell运算符使用
4.语法(运算符详解)03shell算数运算文档前提条件 a=10,b=20算数运算符运算符说明含义+加法expr $a + $b 结果为30-减法expr $a - $b 结果为-10*乘法expr $a \* $b 结果为200/除法expr $a / $b 结果为2%取余expr $a %$b 结果为0=赋值...
2019-11-03 16:55:30 508
原创 Shell中if使用
3.语法(if语句)02if语法##### 第一种写法 ###### 注意 第一种写法是不能加语句的if(表达式);fi##### 第二种写法 #####if(表达式);then 语句elif(表达式) 语句else 语句fi注意点 if后面不需要{} 只需要;语句一定要有tab,不能是空格。空格在Shell语法中不能随便写,是一种特殊语义 ...
2019-11-03 16:54:35 1232
原创 Shell语法(循环+文件读写)
2.语法(循环+文件读写)01for循环语法格式for 变量 in 字符串do 语句1done介绍完for语法格式后,先看一下Linux自带的一个类似for循环的命令seq命令seq 1 15输出1一直到15123456789101112131415示例#!/bin/bashfor i in `seq 1 15`do ...
2019-11-03 16:54:01 6431
原创 Shell变量的定义到使用
1.Shell变量的定义到使用Shell入门shell 可以理解为批处理指令,通过shell编程将避免做一些重复的工作,这里先看一个demo入门执行的时候需要将 // 后面的去除,shell的注释是# 这里为了方便使用//demo.sh#!/bin/bash // #!这里是一个标记,告诉系统这个脚本需要使用什么解释器来执行 一定要有,不然shell不知道由谁来执行#File b...
2019-11-03 16:53:18 173
原创 CmakeList.txt快速入门
2.CmakeList.txt文件详解CMakeLists.txt 简析使用AndroidStudio3.4创建一个C/C++项目,默认在app/src/main下生成cpp目录,其中有一个CMakeLists.txt和native-lib.cpp。看一下CMakeLists.txt中中的内容,去掉注释cmake_minimum_required(VERSION 3.4.1)add_li...
2019-11-03 16:51:11 623
原创 CMake语法快速入门
1.Cmake语法详解什么是Cmake在Android Studio 2.2及以上,构建原生库的默认工具是CMakeCMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。CMake并不直接构建最终的软件,而是生成其他的工具的脚本,比如生成makefile,然后在依据这个工具的构建方式使用。CMake是...
2019-11-03 16:50:34 447
原创 android屏幕适配方案1
android屏幕适配方案1-自定义百分比布局适配1. 思路UI设计的时候都会有一个基准的比例,比如是按照1080*1920,这个时候,如果使用dp的形式进行适配,在不同的手机上,会显示出不同的效果,比如按钮之间会进行挤压。2. 确定比例计算屏幕与标准设计尺寸之间的比例,通过屏幕宽高和设计尺寸宽高做比较。public class Utils { private static U...
2019-09-05 22:41:18 101
原创 内核学习15-字符设备驱动详解
linux 内核学习15-字符设备驱动详解1. 字符设备驱动的抽象这里将上面学习的内容进行解析<include/linux/cdev.h>struct cdev{ struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_h...
2019-09-02 22:35:10 251
原创 linux 内核学习14-从一个简单的字符设备开始
linux 内核学习14-从一个简单的字符设备开始1. 设备分类字符设备块设备网络设备2. 准备工作编写一个简单的字符设备驱动,实现基本的open,read和write方法编写相应的用户空间测试程序,要求测试程序调用read的函数,并能看到对应的驱动程序执行了相对的read方法MakefileBASEINCLUDE ?=/lib/modules/`uname -r`/...
2019-09-02 18:33:10 296
原创 linux 内核学习12-符号共享
linux 内核学习12-符号共享我们在为一个设备编写驱动程序时,会把驱动按照功能分为好几个内核模块,这些内核模块之间有一些接口函数需要互相调用,这个怎么实现呢?Linux内核为我们提供了两个宏来解决这些问题。EXPORT_SYMBOL()EXPORT_SYMBOL_GPL()EXPORT_SYMBOL() 把函数或者符号对全部内核代码公开,也就是将一个函数以符号的方式导出给内核中的其他...
2019-09-02 13:28:57 205
原创 linux 内核学习11-内核模块参数
linux 内核学习11-内核模块参数内核模块作为一个可拓展的动态模块,为Linux内核提供灵活性,所以需要依据不同的场景来传递不同的参数,实现不同的功能1. 准备工作#define module_param(name,type,perm) module_param_named(name,name,type,perm)#define MODULE_PARM_DESC(_parm,...
2019-09-02 13:07:05 358
原创 linux 内核学习9-在QEMU中添加文件系统支持
linux 内核学习9-在QEMU中添加文件系统支持1.准备工作linux内核源码2.添加文件系统支持在Linux中创建一个64M的镜像(image)dd if=/dev/zero of=swap.img bs=512 count=131072 <这里使用dd命令将swap.img 通过sd卡的方式加载到QEMU中 qemu-system-arm -nogra...
2019-09-01 22:33:15 547
原创 linux 内核学习8-通过Eclipse+QEMU调试ARM内核
linux 内核学习8-通过Eclipse+QEMU调试ARM内核1. 准备工作下载地址:https://archive.eclipse.org/technology/epp/downloads/release/oxygen/3/eclipse-cpp-oxygen-3-linux-gtk-x86_64.tar.gz不建议使用下面的方式,在ubuntu18.4无法运行sudo apt-...
2019-09-01 22:32:48 266
原创 Android面试过程中遇到的一些问题2019
Android面试过程中遇到的一些问题2019这里记录一下在Android中面试遇到的一些回答的不是很好的问题1. 原生模块如何跳转到Flutter模块集成sdk,并将sdk作为一个单独的module添加到项目中跳转到Flutter模块Flutter为Android提供了一个FlutterActivity,可以通过startActivity的方式跳转到Flutter界面public...
2019-09-01 19:01:17 579
原创 谁调用了activity的oncreate()方法
谁调用了activity的oncreate()方法这一切的一切都要从一个类说起,这个就是ActivityThread,这个类是Android应用程序的入口。正常情况下,每一个java程序都需要有一个main方法作为整个应用程序的入口。但是Android并没有将main方法暴露出来,而是封装到了ActivityThread中。现在来看一下ActivityThread中的main方法Activit...
2019-09-01 18:50:21 1181
原创 ActivityManagerService启动学习
ActivityManagerService启动学习简介学习android高级课程的时候遇到几个问题,就是如何启动一个app。activity与ActivityManagerService通讯流程?Activity究竟是什么?Activity究竟是什么?个人理解是一个状态。当前页面处于什么状态。而绘制是通过WindowManagerService来进行。状态控制通过ActivityMana...
2019-09-01 18:43:50 651
原创 # linux 内核学习10-从第一个内核模块开始
linux 内核学习10-从第一个内核模块开始1. 准备工作c文件#include <linux/init.h>#include <linux/module.h>// 该内核模块初始化函数 可以通过insmod命令来加载一个内核模块static int __init my_test_init(void){ printk("my first ke...
2019-08-31 20:30:15 234
原创 linux 内核学习7-通过QEMU调试ARMV8的Linux内核
linux 内核学习7-通过QEMU调试ARMV8的Linux内核1. 准备工作$ sudo apt-get install gcc-aarch64-linux-gnu gcc-5-aarch64-linux-gnu2. 切换GCC版本默认的GCC版本是7.+的版本,现在要替换为5.+的版本设置gcc-5的版本sudo update-alternatives --install...
2019-08-31 17:55:53 1017
原创 linux 内核学习6-通过QEMU调试ARM Linux内核
linux 内核学习6-通过QEMU调试ARM Linux内核1.实验准备安装gdb-multiarchsudo apt-get install gdb-multiarch
2019-08-30 23:13:25 871
原创 git中merge和rebase的区别
git中merge和rebase的区别合并之前的分支merge合并之后的分支rebase合并之后的分支可以发现,他们的顺序不同。merge是按照时间的顺序来排序
2019-08-29 23:30:16 211
原创 linux 内核学习4-Vim变身为强大的IDE工具
linux 内核学习4-Vim变身为强大的IDE工具1. 目的vim环境下debug linux代码的配置2. 准备工作$ git clone https://github.com/VundleVim/Vundle.vim.git~/.vim/bundle/Vundle.vim2.1配置内容" Vundle manageset nocompatible ...
2019-08-29 21:10:02 831
原创 linux 内核学习3-自己编译一个ARM Linux内核
linux 内核学习3-自己编译一个ARM Linux内核1. 目的编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行。2. 准备工作2.1 开发环境ubuntu 18.4虚拟机linux内核版本 4.19.67 linux内核地址busybox 工具包busybox 编译$ cd busybox$ export ARCH=arm$ exp...
2019-08-29 20:47:13 3262 3
原创 linux 内核学习2-使用笨叔叔定制的内核
linux 内核学习2-使用笨叔叔定制的内核1. 目的编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行。2. 准备工作2.1 开发环境ubuntu 18.4虚拟机笨叔叔调教好的linux源码 源码地址2.2 需要下载的软件包sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueab...
2019-08-29 19:12:15 776
原创 linux 内核学习1-替换linux自带的内核
linux系统学习,替换linux的内核1. 准备工作1. 开发环境ubuntu 18.4虚拟机linux内核版本 4.19.672. 需要下载的软件包sudo apt-get install libncurses5-dev libssl-dev build-essential openssl3. 其他准备工作解压linux内核代码xz -d linux-4.19.67.t...
2019-08-28 23:46:35 581
原创 android学习路径
android薪资个人理解的android如何计算技能点薪资上线ui :opencv,opengl…20kndk :c,c++20kjava20klinux20kandroid源码20k如果能够熟练掌握着这些知识点,月薪50k没有什么压力...
2019-08-24 16:39:48 513
原创 心得
心得最近在找工作,和一个小组长聊了一下,感觉很有收获。我技术不太好,但是我可以招技术更好的,我只要可以管理他就可以了。这个对我来说是一个警醒,对很多做技术的也是一个提醒吧!技术只是你能力的一种,还有管理职能。前几年太过沉迷技术,忽略了很多东西。现在一点点的把它找回来。...
2019-08-24 16:26:07 90
原创 Not an editor command: ^M
Not an editor command: ^M遇到的问题今天将别人的.vimrc文件从window拷贝到ubuntu虚拟机,执行vim 安装插件的时候遇到了这个问题。原因是因为windows的换行符和linux的换行符不一致解决办法在vim中输入如下命令,修改文件的换行格式: set fileformat=unix其他使用vundle安装插件的时候时候是没有进度条的,要等出...
2019-08-21 21:42:19 2720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人