android 源码编译_Android源码编译电脑配置
如何将源代码编译后的文件编译到android中
在Android framework中修改资源文件时,在Android 4.0之前,都是直接在sourcecode/frameworks/base/core/res/res下面添加对应的资源文件,然后编译framework-res即可,但是这种情况到了Android 4.1就有改变了。按照以前的方法在编译的时候却会报错,提示找不到引用的资源文件,一般情况下找不到资源文件有以下几个原因:
(1). 资源id写错了,导致id不匹配;
(2). 未编译framework-res,从而导致无法找到资源文件; 比如你在framework中添加了一张,但你在编译framework-res之前去编译引用该资源的SystemUI,那肯定是找不到的。
(3). 未import正确的资源包; 在frameworks/base/core/res/res下编译生成的资源文件保存在out/target/common/R/com/android/internal/R.ja 可以先在该R.ja内看有没有你的资源id,然后检查源代码有没有:
import com.android.internal.R;
(4). 没有修改frameworks/base/core/res/res/values/public.xml;
第四点是Android 4.1才需要做的,在Android 4.1之前,我们添加一个资源文件,编译时会自动添加到public.xml中,但到了Android 4.1却不会了,需要手动添加,比如:
添加了一个布局文件,则需要在public.xml中添加如下代码:
android 源码编译_Android源码编译电脑配置
android 源码编译_Android源码编译电脑配置
android6.0.1源码编译报错如下,求教
IDEA(AS是基于InliJ方法/步骤
在Android6.0的frameworks/base/core/ja/com下面增加代码,发现有如下编译错误:
Error: out/target/common/obj/JAVA_LI从 Android 7 开始,Android 源码编译时默认使用 Ninja,编译时,会先把 makefile 和 bp 转换成 ninja 再进行编译。这个转换过程非常慢(需要遍历处理所有关联的 makefile、bp 文件),即使只是通过 mm 或 mmm 编译某个模块,也会有很多因素触发 ninja 文件的重新生成,而这对基于源码开发的模块很不友好,编译好慢!BRARIES/com.slam._intermediates/classes.jar: unknown package name of class file com/slam//slamInfo.class
搜索build目录下,发现build/core/tasks/check_boot_jars/check_boot_jars.py脚本里CheckJar函数会打印上面的提示,在该文件的main函数调用该函数前,会先调用LoadWhiist函数加载白名单列表文件,加载的文件为调用check_boot_jars.py脚本时传进来的参数,继续搜索,发现在build/core/tasks/boot_jars_package_check.mk文件中会调用到该脚本,并且参数是build/core/tasks/check_boot_jars/package_whiist.txt,故而修改该TXT文件,添加如下内容:
com.slam.
com.slam...
接下来make clean后再make编译的,确认能编译通过。
如何把应用程序app编译进android系统
为 Launcher 和 SystemUI 准备一份开箱即用的指令,尽情玩耍吧~把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
我们先看看它的 :同时也可以删减系统自带的应用程序,精简系统;
1.buildtargetproduct 目录下generic.mk文件:
PRODUCT_PACKAGES :=
AccountAndSyncSettings
DeskClock
AlarmProvider
Bluetooth
Calculator
Calendar
testMid
CertInstaller
DrmProvider
Gallery3D
LatinIME
Launcher2
Mms
Music
我们添加一个testMid 应用名称。
packagesapps 目录下,修改android.mk文件。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-ja-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
注:LOCAL_PACKAGE_NAME := testMid (包名必须和generic.mk中添加的相同)
编译源码,可以看到在
outtargetproductdkv210app
目录下生存了testMid.apk了。这时.img也包含了此应用。
-------------------------------------------------------------------
特殊情况:有时,应用需要包含jar包,这时的app导入源码时会出现问题:
MODULE.TARGET.JAVA_LIBRARIES.libarity already defined by ... stop
由于 LOCAL_STATIC_JAVA_LIBRARIES := libarity 会引发错误信息。
目前解决方法是:
buildcore 目录下修改base_rules.mk
ifdef $(module_id)
#$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
endif
$(module_id) := $(LOCAL_PATH)
(2)、删除原厂(Telchips)带源码的应用程序,如DTV_DVBT
在/dev/echips/m801/dev.mk
注释掉相应语句:
# PRODUCT_PACKAGES +=
同时,在/out/target/product/m801//app 找到相应的.APK包,并删除
android源码用64位系统编译了 怎么运行在32位的手机上
LOCAL_LDFLAGS += -m32android源码编译64位改成32位的办法(转载)
You are attempting to build on a 32-bit .Only 64-bit build environments are supported beyond froyo/2.2.
需要进行如下修改即可,
将./external/clearsilver/cgi/Android.mk
./external/clearsilver/ja-jni/Android.mk
./external/clearsilver/cs/Android.mk
四个文件中的
LOCAL_LDFLAGS += -m64
注释掉,或者将“64”换成“32”
LOCAL_CFLAGS += -m32
然后,将
./build/core/main.mk 中的
ifneq (64,$(findstring 6Framework'来让AS将它作为一个Android工程,从而方便调试代码.4,$(build_arch)))
改为:
ifneq (i686,$(findstring i686,$(build_arch)))
使用 Ninja 提升模块编译速度
CameraAOSP 在源码中已经内置了一个 ninja 执行文件,路径为: ./prebuilts/build-tools/linux-x86/bin/ninja
简单使用PATH="/usr/local/in:/usr/local/bin:/local/in”的话,我们关注它的两个参数就行了
举个栗子:
就这样,不需要通过 mm 或者 mmm 命令,目标产物同样生成了。我们看看耗时:
可以看到,整个编译在 18s 完成了,相比动辄七八分钟的 mmm ,效率提升还是很可观的。
虽然 ninja 很方便,但要用它来编译单个模块,还是有一些限制和注意事项的:
SystemUI:
android源码编译,如何在/data目录下创建文件夹导入文件。文件直接放out/target/././data目录里好像没用
./external/clearsilver/util/Android.mk您好,修改mk编译的话是编译不到data里面去的。你可以在sh脚本里面添加拷贝命令,在开机时候拷贝到data里面。比如编译后文件在/etc/xxx.xx ,sh脚本就可以这么写cp //etc/xxx.xx /data/etc/xxx.xx。
Ja代码 收藏代码求解答,Android源码编译时怎的添加第三方jar包
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += 别名:libs/包名.jar
可以参二、配置AS的JDK、SDK考源码的Android.mk 或者 从网上找找相关ARM-配置交叉编译环境:的资料
ubuntu12.04编译android源码要多久
2.把testMid包放入这个关键是要看你的电脑配置情况,以及代码的附加情况,有的平台软件会附加很多东西上去,编译就比较慢了。
LOCAL_CFLAGS += -m64我们这边使用的是四核八线程的电脑,32GB内存,
原生代码 4.4 八线程编译40分钟左右,5.1,一个半小时左右,6.0的大约一个小时,以上是原生代码编译模拟器的时间。
高通代码6.0编译一般需要两个小时左右,mtk的也是两个小时左右,
ARM_PRODUCT_PATH设置
Ja代码 收藏代码方法一:(Android源码编译)
1. 进入A--重新编译,这时可以通过了。ndroid源码目录—android frameworks native cmds
2. 创建一个目录,参考其他目录写:Android.mk panda.cpp
3. mm
4. 到该目录到ARM板—Install: out/target/product/vstar//bin/i2c
5. 板子运行
方法二·:(ubunt配置交叉编译
1.Android源码交叉编译工具位置:android prebuilts gcc linux-x86 arm
2.将交叉编译工具拷贝至ubunt
3.打开配置文件 — sudo vim /etc/environment
4.添加:/opt/toolchain-4.5.1/bin 到path中
5.使之生效 — source /etc/environment
如何使用Android Studio开发/调试Android源码
一、修改Android
Studio(以下简称AS)的内存配置
因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文档中使用的是748m,
可自行修改。
在IDE中添加一个没有classpath的JDK,
这样可以确保使用源码里的库文件
三、生成导入AS所需配置文件(.ipr)
②检查out/host/linux-x86/framework/目录下是否有idegen.jar
如果idegen.jar不存在,执行:
mmm
在5.0.1的源码中会生成res.ja的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。
③执行
dlopment/tools/idegen/idegen.sh
等待出现类似下面的结果:
Read
excludes:
5ms
Trersed
tree:
44078ms
这时会在源码的根目录下生成android.ipr和android.iml两个InliJ
IDEA社区版开发的)的配置文件
④在AS中打开源码根目录下新生成的android.ipr
四、解决源码中跳转错误问题
①为当前工程设置正确的SDK和JDK
②设置'Modules'的依赖
先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
点击上图中'2'指向的'+'并选择上图'3'指向# SampleDVBTPlayer 的'Jars
or
directorie注释掉错误信息:s'选项,依次将frameworks和external文件夹添加进来
五、DEBUG源码
可以通过给刚导入的工程在'Modules'中添加'Android
在弹出的选择进程(Choose
Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.
六、其它
代码中很多地方提示Call
requires
API
Ll
x....
出现这个问题是因为AS将工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.
只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。
也可以考虑使用build.gradle来解决该问题。
android studio怎样编译qgroundcontrol安卓源码
Launcher:android studio怎样编译qgroundcontrol安卓源码
,一般来说现在流行在网上作,如果手机上相对方便一dlopment/tools/idegen/些,因为在手机上只需要网页或者软件APP就可以完成了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。