在没有Android源代码的前提下,编写LinuxC程序,放到手机上运行。
Android中有bioniC库,提供了c程序运行环境。
永远的hello,world。
#include <stdio.h> void main() { printf("nihao, hello\n"); printf("您好\n"); printf("Wuyq\n"); }
编译:root@bfq:~# arm-none-linux-gnueabi-gcc AndroidC.c -o AndroidC -static
将可执行程序搞到你的手机上。手机或许需要root,自己去尝试吧。
修改权限:
运行看效果:
思考???
① 手机上面直接编写一个app,app能够去运行我们自己写的demo么?
② 能够将demo搞到android的服务中去,使其开机自动运行??
问题的提出??
Android的源代码通常放到远程服务器上面,我们通过自己的pc使用secureCRT软件连接上远程的服务器,进行编译操作。 编译一次android源代码的时间通常是很久很久的,但是由于网络进行会掉线,导致远程连接的终端中断,使得整个编译过程失败。
由于编译android源代码的程序是在远程的服务器主机上面运行的,而我们本地的pc机器只是充当了一个输入输出设备。 故当网络断开的时候,远程服务器主机上面的程序应该一直存活,不应该关闭的。
验证实验:
写一个c程序,while(1)死循环一直占用着终端窗口。当终端被关闭的时候,查看程序是否还在存活??
void main() { while(1) { printf("I am alive\n"); sleep(1); printf("I want to You!\n"); } }
终端1:./a.out &
终端2:ps -u wuyingqiang
当终端1关闭的时候,再终端2查看,此时a.out 已经死掉了。
结论:前台、后台运行的依托的是终端本身。
看来要解决问题,只能使用守护进程了。
此时带来了一个新的问题,就是为什么这里的tty为?了。因为守护进行已经脱离了终端了。所以为?。那么当我想把这个守护进程搞到前端运行的时候,这个时候应该怎么搞呢?蒙圈了?迷糊了?。。。。。。。。
自己制作的apk,发布到网站http://www.xxx.com/yyy.apk上,通过生成二维码工具制作生成二维码,然后放到网站上面,供用户扫描下载安装。具体制作过程,so easy! 不会的同学请百度。
手机扫描二维码,安装下载没有问题。完美运行。
Pc端通过浏览器访问http://www.xxx.com/yyy.apk网站下载,百度、360浏览器可以下载成apk文件,但是ie浏览器下载的确是zip压缩包,多少有些不爽。
下载完后把扩展名修改成apk就可以了。可是真的很麻烦哎。
找到tomcat/conf/web.xml配置文件。
修改MIME标签
<mime-mapping> <extension>apk</extension> <mime-type>application/vnd.android.package-archive</mime-type> </mime-mapping>
重启服务器,清空ie缓存,解决。
A)有源代码的情况下,直接将apk文件放到out/.../system/app/目录下,重新编译生成镜像文件进行烧写就可。相当于重新刷了一次ROM。
B)如果没有源代码了,只能通过其他的技术手段进行实现。例如,短信木马。
./frameworks/base/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java文件中的192行改为false
private boolean mExternallyEnabled = true; 将true开关量改为false。重新编译源码生成镜像。
经常使用第三方厂家的模块,由于模块一般都是提供一个电源,串口tx,rx,而是的电平是ttl电平,pc机器上的串口是Rs232电平。通常需要借助一个max232芯片进行转换。在使用的过程中,此芯片经常发烫,烧坏。造成数据的不正确。
解决方案:购买了usb-ttl模块。直接安装上驱动即可使用。使用还真是很方便。完美的很。就是先太短了,就先很是费劲,此时找来一根usb延长线,一头公一头母。连上usb延长线,在设备管理器中,能够看到usb-ttl串口号,但是串口助手中,咋也没有数据。后来找来硬件工程师帮忙。将串口的gnd连接上。完美解决问题。
在后期的使用过程中,还需要多多注意这个问题。
A.先做好电话咨询,了解清楚相关的各种细节。最好在进行电话沟通之前,先把所需要了解的各种问题点,在笔记上做一个简单的总结。
B.电话沟通的过程中,应该仔细听取对方的描述细节。避免主观臆断,进行猜测的行为。
C.合同的范本,各种格式的细节描述,先做到心中有数,再及时进行沟通。
就是同一个程序,修改什么值能够安装多次而不覆盖?
修改包名即可。
Android程序是以包名作为线程名字。
程序中是不允许有两个相同包名的程序的。
例如:将qq.exe重命名为qq1.exe和qq2.exe在一台电脑上进行安装。
改变包名, 和AndroidMainfest.xml文件中的
package="com.wuyq.linearlayout"。
安卓4.3(API 18)为BLE的核心功能提供平台支持和API,App可以利用它来发现设备、查询服务和读写特性。相比传统的蓝牙,BLE更显著的特点是低功耗。这一优点使android App可以与具有低功耗要求的BLE设备通信,如近距离传感器、心脏速率监视器、健身设备等。
// 使用此检查确定BLE是否支持在设备上,然后你可以有选择性禁用BLE相关的功能 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show(); finish(); }