|
2015-1-30 19:54 创建一个新的Android产品项目 (模拟器版) 如果要开发自己的产品,则需要定义一个产品项目,过程如下。 首先我们定义产品的规格,假设如下: 公司名称 anne 产品名称 DWP 主板名称 devwangboard 然后按照下面的步骤新建产品项目: 第(1)步:在源代码目录下创建一个用户目录 命令mkdir vendor 命令mkdir vendor/anne 命令mkdir vendor/anne/products # Overrides PRODUCT_BRAND :=anne PRODUCT_NAME := DWP PRODUCT_DEVICE := devwangboard 如果没有BRAND则会出错,亲测,另外这个文件的内容还要添加如下,不然会开不了机。 PRODUCT_PACKAGES :=\ AlarmClock \ Email \ Fallback \ Launcher2 \ Music \ Camera \ Settings \ LatinIME \ NotePad \ SoundRecorder \ CertInstaller \ DeskClock $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk) # Overrides PRODUCT_MANUFACTURER := anne PRODUCT_BRAND :=anne PRODUCT_NAME := DWP PRODUCT_MODEL := Devwang Phone PRODUCT_DEVICE := devwangboard
PRODUCT_LOCALES := zh_CN 第(5)步:在vendor/anne/products目录下创建一个AndroidProducts.mk文件,定义Android产品配置文件mk的路径,也就是DWP.mk文件的路径,具体如下: $(LOCAL_DIR)/DWP.mk 它会被用到此板的产品使用。 TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi BOARD_USES_GENERIC_AUDIO := true USE_CAMERA_STUB := true
![]() ![]() 第(8)步:如果你希望修改系统属性,则可以在主板目录下 新建一个system.prop文件,该文件中可以修改系统属性,举例如下: # system.prop for # This overrides settings in the products/generic/system.prop file # # rild.libpath=/system/lib/libreference-ril.so # rild.libargs=-d /dev/ttyS0 第(9)步:在主板目录下 新建一个Android的主板配置文件AndroidBoard.mk,此文件是编译系统接口文件,内容如下: # make file for new hardware from # LOCAL_PATH := $(call my-dir)
# # this is here to use the pre-built kernel ifeq ($(TARGET_PREBUILT_KERNEL),) TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel endif
file := $(INSTALLED_KERNEL_TARGET) ALL_PREBUILT += $(file) $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target)
# # no boot loader, so we don't need any of that stuff.. # LOCAL_PATH := vendor/ardent/merlin include $(CLEAR_VARS) # # include more board specific stuff here? Such as Audio parameters.
#
![]() 在编译之前要执行命令: . build/envsetup.sh 注意点号.和build之间有个空格,不然会出错。 ![]() 编译需要一定的时间,一段漫长的等待。亲测要做顿饭+吃顿饭的时间,嘿嘿。 参考博客:http://blog.youkuaiyun.com/wh_19910525/article/details/7993266 OK
export PATH=/home/devwang/android-2.3.7_r1/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/home/devwang/android-2.3.7_r1/out/target/product/devwangboard
|
相关推荐
2024 《计算机网络》实验教学指导书.doc
2024 《计算机网络》实验教学指导书.doc
下载android源码,在android源码中增加模块,用模拟器运行新增模块。
基于android系统源码增加模块 我的android学习目录:drjiang@drjiangISS:~/work/android$ drjiang@drjiangISS:~/work/android$ls -l 总用量70148 drwxr-xr-x2 drjiang drjiang 4096 4月 414:57 blog drwxr-xr-x3 drjiang dr
施密特触发电路详细原理介绍
我们想获得矩形脉冲,有种方法是可以采用整形的方法获得矩形脉冲,但前提是可以找到频率和幅度都符合要求的电压信号。 我们设定矩形脉冲的几个指标。 施密特电路是脉冲波形变换中一种常采用的电路,主要有以下两个特点: 1.输入电平从低电平上升过程中电路状态转换为对应的输入电平,与高电平下降过程中对应的输入转换电平不同。 2.通过电路内部的正反馈使输出电压波形的边沿变得很陡。 施密特电路的结构和工作原理 我们先从模电的角度来分析此电路的工作原理。 此电路是通过公共发射极电阻耦合的两级正反馈放大器。 v1输入为低电平
编译Android源码,并用模拟器启动编译好的镜像
进入Android目录,首先清除之前的编译: make clobber 然后设置环境: source build/envsetup.sh 选择编译的文件,直接输入命令: lunch BUILDTYPE 是以下类型之一: 编译类型 使用情况 user 权限受限;适用于生产环境 userdebug 与“user”类似,但具有 root 权限和可调试性;是进行调试时的首选编译类型 eng 具有额外调试工具的开发配置 如下: gs@aigo:~/02_
2026零成本私有化:OpenClaw一键搭建Discord/Telegram智能机器人,数据不出本地,永久免费替代ChatGPT
如果内置的功能不能满足你的需求,你可以很容易地添加自己的自定义工具。public string Description => "查询指定城市的天气";// 调用天气API获取天气信息return $"city今天的天气是晴,温度25度";// 注册工具今天北京的天气怎么样?大模型的选择很重要:不要盲目追求大参数的模型。对于大多数场景来说,7B参数的模型已经足够用了,而且速度快,内存占用低。上下文长度不要设置太大:上下文长度越大,内存占用越高,推理速度越慢。
LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题
本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。
grep查找字符串所在文件和行号,find查找文件所在目录即路径
grep查找字符串所在文件和行号,find查找文件所在目录即路径 1、grep -rin "app.te" device/ 注意:i-忽略大小写、n-显示行号。 device/mediatek/common/BoardConfig.mk:56: app.te \ device/mediatek/common/BoardConfig.mk:67: untrusted_app
华为擎云W515 PGUV-WBY0安装银河麒麟V10全流程解析
本文详细解析了华为擎云W515 PGUV-WBY0安装银河麒麟V10系统的全流程,包括准备工作、镜像下载与校验、启动盘制作、BIOS设置、安装过程关键选择、系统初始化及常见问题排查。特别针对ARM架构设备提供了实用技巧,帮助用户顺利完成国产化系统的部署与优化。
grep -E 即 egrep 匹配多个
grep --help -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE) ‘egrep’即‘grep -E’。 匹配单个,不用双引号: ls | grep file 匹配多个,要加参数,使用双引号: ls | grep -E "file1|file2" ls | egr
【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二
【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二
搞定ESD(七):静电放电问题典型案例分析(二)
静电放电噪声耦合的方式主要是:传导耦合与辐射耦合,辐射耦合主要以磁场耦合、 电场耦合为主要形式。电场耦合发生的主要条件是:静电放电高频在参考地平面寄生电感中产生电平波动,平行于参考地平面上的较长信号布线就很容易通过分布电容发生电场耦合。根据高速信号回流路径的特性可知,其回流路径是贴近信号布线下方,或者信号两侧,若信号回流路径跨分割后,环路面积会随之增大;信号环路面积大从EMI角度看其空间辐射更强,从EMS角度看则更容易耦合外部噪声干扰(雷击浪涌、EFT、ESD、RS)。
ERROR 'duplicate declaration of type/attribute' at token ';' on line 14430
MTK添加Android权限te文件后,编译make bootimage报重复duplicate错误。 错误信息: ------------------------------------------------------------------------ out/host/linux-x86/bin/checkpolicy: loading policy configurati
记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑
鸿蒙系统的华为老机子比较麻烦,坑有点多,兄弟们加油!
c语言 int与byte[]互相转换
c语言 int与byte[]互相转换 root@ubuntu:/media/mtk6795/alps/sunwave_pub# gcc -g test.c root@ubuntu:/media/mtk6795/alps/sunwave_pub# gdb ./a.out GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Cop
基于LUT表对鱼眼图像进行畸变校正
当然也可以进行图像的畸变校正操作,已知相机的焦距为fx/fy,光心为cx/cy,像素大小为p(单位mm/pixel)对于畸变校正结果图中像素点(u,v),其对应的原图中的像素坐标(u',v')的计算流程描述如下。1)假设无畸变相机成像模型的焦距和光心与原相机相同,计算得到无畸变相机成像模型中归一化平面坐标(X,Y,Z),其中X=(u-cx)/fx,Y=(v-cy)/fy,Z=1。这里x'/y'的单位为像素。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
find . -type f ! -name "*.o" 排除某类文件 排除多类文件 排除隐藏文件
# ls 先看看有的文件,这是linux中特有的android驱动。(目录:kernel/drivers/staging/android/) # find . -type f ! -name "*.o" 排除以“.o”结尾的文件,但是把隐藏文件(以“.”开头的文件)也查出来了。也就是排除某类文件。 # find . -type f ! -name "
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
小米系列手机开源代码
小米系列手机开源代码 https://github.com/MiCode/Xiaomi_Kernel_OpenSource
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04)
VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04) 修改启动方式: 以GNOME Classic(No effects)方式启动ubuntu, 才可以进入Unity模式。
find & grep 结合查找 某字符串 所在文件
1、 在当前目录下所有文件中查找内容包含 字符串 bruce_xxx 的文件: # find ./ -name "*" -exec grep "bruce_xxx" {} \; ----------------------------------- root@ubuntu:/media/4412-5.0_/bruce-4412-5.0/android-5.0.2/brucepat
编写第一个Android Native Service
编写第一个Android Native Service :SQRService,求平方(Square)运算。 为什么有核心服务呢? 1. 核心服务是 Android 框架里最接近Linux/Driver 的部分。为了充分发挥硬件设备的差异化特性,核心服务是让上层Java 应用程序来使用Driver/HW Device 特色的重要管道。 2. 在开机过程中,就可以启动核心服务(例如汉
查看中断号cat /proc/interrupts |grep sw_irq
查看中断号cat /proc/interrupt |grep sw_irq
adb logcat 2>&1 | tee log.log
好吧, 之前傻傻只知道使用eclipse的logcat查看手机的log日志; 有时经常导致adb.exe挂了。 新方法, 在ubuntu使用命令查看手机log。 adb logcat 2>&1 | tee log.log 2是标准错误,&1是标准输出,2>&1意思就是将标准错误输出到标准输出中 Ctrl + C 停止。
Linux下Binder驱动源码(linux-3.0.86)
以linux-3.0.86为例 目录:linux-3.0.86/drivers/staging/android/ binder.c /* binder.c * * Android IPC Subsystem * * Copyright (C) 2007-2008 Google, Inc. * * This software is licensed under
修改vmware虚拟机的虚拟磁盘卷标
打开 虚拟磁盘 vmdx 名字 很长 fb8b73ae-97fe-4064-a698-e18b56a22aec 现象: 挂载自己新建的虚拟磁盘vmdx后,/media/下名字变成一连串字母。 解决: ubuntu中使用 磁盘实用工具,在虚拟磁盘未挂载时修改卷标。
mtklog 日志到一定条件自动删除
MTK平台手机中, 开启MTKLogger后,记录一段时间后,部分日志会被删除。为什么呢? 原因在于,配置文件mtklog-config.prop中,配置的日志的大小size。 路径:/etc/mtklog-config.prop 命令:cat /etc/mtklog-config.prop mtklog_path = internal_sd com.mediatek.log.m
kernel时间戳转android时间
kernel时间戳转android时间




















1072



被折叠的 条评论
为什么被折叠?



