本文基于android8.1系统编译
正常情况下,编译时很多信息都被隐藏掉了,比如如下这种
有多条内容的都被折叠到一行显示了,我们就看不到详细的信息了
加入我们加入一个tee 管道输出,命令如下:
make|tee detailed_log.txt
再执行时原来被折叠的行都可以显示出来了。
本文基于android8.1系统编译
正常情况下,编译时很多信息都被隐藏掉了,比如如下这种
有多条内容的都被折叠到一行显示了,我们就看不到详细的信息了
加入我们加入一个tee 管道输出,命令如下:
make|tee detailed_log.txt
再执行时原来被折叠的行都可以显示出来了。
local命令表示声明的变量是本地变量
默认的为全局的变量
这是因为Android P(9.0)限制了http的明文请求的原因,具体分析见下面转发的文章
转发:
在Android P(9.0) 系统中,限制了明文流量的网络请求,因为安卓新版本默认是不允许使用明文网络传输的,会强制让应用都使用https,非加密的流量请求都会被系统禁止掉。
Google表示,为保证用户数据和设备的安全,针对下一代Android系统(Android P) 的应用程序,将要默认使用加密连接,这意味着Android P将禁止APP使用所有未加密的连接,因此运行Android P 系统是安卓无论是接收流量还是发送流量,都不能明文传输,需要使用下一代(Transport Layer Security)传输层安全协议,而Android Nougat和Oreo则不受影响。如果WebView 的url使用http协议,同样会出现加载失败,https则不受影响。
如过在Android P(9.0)上依然使用明文传输,则有下面三种解决方案:
1、将APP改用https请求;
2、将targetSdkVersion降到27以下;
3、在res下新建一个xml目录,然后创建一个名为:network_security_config.xml文件,这是一个系统的网络安全配置文件,该文件内容如下:
然后在APP的AndroidManifest.xml文件下的application标签内增加下面一条属性就OK了
————————————————
版权声明:本文为CSDN博主「时代新人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013184970/article/details/88116680
原文链接:https://blog.csdn.net/qq_40585267/article/details/96284943
从错误信息可以看出,该资源没有被公开是私有的。导致无法被引用。
我们可以直接将“@android”改成“@*android”
问题解决。。。。
用于监测最近一段时间内发出的全局广播
adb shell dumpsys activity | grep BroadcastRecord |grep -v android.
grep -v android.意思是不显示包含android.字符的广播
dumpsys显示的广播在10秒左右就会被清除,所以在广播发送以后短时间内才有效
Android Studio 3.4.2
c++编译器:cmake
本文从一个不包含c++支持的项目开始添加ndk的开发
在app/build.gradle中的android节点中增加externalNativeBuild节点,如下:
我们指定cmake的配置文件为CMakeLists.txt,其位置应该在app/CMakeLists.txt
创建文件app/CMakeLists.txt
因为jni的函数声明必须和具体的类名关联,我们新建一个CUtils类来处理,新建一个CUtils.java
(Android默认的例子中都是放在MainActivity中,所以你看到的c中的函数名都是类似这样的Java_com_xxx_xx_MainActivity_func这样的)
假设我们要测试一个实现求和的jni函数,名字叫getSum,先在CUtils.java中定义对native中的引用,CUtils.java代码如下:
选择菜单File->New->C/C++ Source File,输入名字test
此场景通常是用在网络通讯中,解决数据头的时候
一般我们会约定头两个字节为某个固定值用于判断是否是有效的数据
如下代码中我们用两种方法做对比,一种是用移位操作将字节头换成int型然后比如
一种是把byte数组中的每一位进行比较
通过比较对比,比较byte数组中的每一位速度会更快。
下面是测试结果:
开发环境:Ubuntu 16.04+Android Studio 3.4.2
添加c++文件后gradle编译不过去,报SIMPLE: Error configuring错误
解决办法:
安装ninja-build
sudo apt install ninja-build
饿汉模式在声明静态内部对象时就创建该对象,就是不管在程序中是否用到这个静态对象都会创建它,对于不一定会使用该对象的程序是一种资源的浪费,代码如下:
因为饿汉模式在声明的时候就创建了,所以不会有线程安全问题
对于构造函数需要传入参数的单例也没办法这样创建
懒汉模式,即在使用的时候才去创建它,相对于饿汉他有点懒,但其实他不懒
代码如下:
假如在多个线程中都会用到这个单例对象,那么就有可能造成实例出多个对象的问题了,就是这种方式是线程不安全的
我们在instance()方法前加上synchronized修饰,这样多个线程就不可能同时进入instance方法了,也不会造成new多个实例的问题了
代码如下:
这种方式看似加了一个锁,但是多个线程可能同时进入到if的判断语句中,同样不能保证_singleton的唯一性
代码如下:
使用c语言和wiringPi库
对于这种开关量的传感器,一般有三个针脚VCC、GND、OUT,通常情况下连接方式如下:
vcc接树莓派引脚的3.3v
gnd接树莓派的gnd
out接树莓派gpio0
新建inputtest.c,并输入以下内容
使用下面的命令编译程序
在控制台中输入以下命令运行程序
./inputtest
当发出声音,声控器被触发的时候会输出input is 1
否则输出input is 0