我正在处理从source.android.com下载的android源代码.
完成构建后,我浏览了这个网站http://elinux.org/Android_Build_System,它解释了android构建系统.
当我在外部/ webkit代码中进行更改并使用它进行构建时
make -j4 libwebcore它编译相应的文件并更新libwebcore.so,它节省了我很多时间.同样的事情适用于应用程序,也适用于构建apks.
当我在框架中进行更改并将命令作为
make -j4 framework 不编译相应文件时,会出现问题.谁能帮我!
我该如何解决这个错误?
Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp] Error 2
Run Code Online (Sandbox Code Playgroud) 我对整个移植问题都不熟悉,因为Android SDK提供的模拟器速度很慢,所以我得到了它.
我下载了android-x86-3.2-RC2-eeepc和android-x86-3.2-RC2-tegav2 ISO-es(来自这个网站)并在VirtualBox上尝试了它们但在eeepc版本和tegev2不会发生事件上没有互联网连接开始.
我试过VirtualBoxHowTo,但在Windows和Linux平台上都没有得到任何东西.我唯一能理解的是,要在VM上使用它,您需要为VM构建它.
谁可以帮我这个事?
PS:我需要HoneyComb版本(3.2)和我拥有的PC是AMD 6核心和华硕Crosshair Extreme主板,Windows 7或Ubunutu 11.10.(两个操作系统均为64位)
我在哪里可以更改Android自定义AOSP构建中的默认设备属性?
例如:
应在构建中定义这些设置,以便在加载构建后它们已处于正确的状态.
是否有所有设置的集中文件/文件夹?或者是一个Settings自行收集所有Android平台模块设置的应用程序?
当我编译Android 5.1.1时,我收到了许多这样的错误:
...
...
...
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
Run Code Online (Sandbox Code Playgroud)
并且make进程最终失败:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed
make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1
Run Code Online (Sandbox Code Playgroud)
我尝试过使用和不使用clang以及使用不同版本的clang来构建源代码.但是在新的分支上,clang是一种要求,如果没有它,make就无法启动.
可能有什么问题?
我想在包中更新我的Android.mk文件以构建新的包,但我不明白它的目的LOCAL_MODULE_TAGS是什么.
怎么LOCAL_MODULE_TAGS办?
我正在构建android源代码并获得新的system.img.我尝试在设备上刷新新的system.img,我发现我需要另一个名为boot.img的文件.这是什么文件?什么用于?我怎样才能获得我的设备?
将Cyanogenmod移植到目前不支持的 Android手机和平板电脑我需要知道什么?
它是否涉及从源代码修改和构建cyanogenmod?
我在哪里可以获得基本的cyanogenmod,它是特定设备端口的起点?
我在某处看到了我需要知道的c/c ++.我还需要知道汇编还是Java?
人们是否从头开始为新硬件编写设备驱动程序?他们如何知道如何与新硬件通信?
你是否在usb上使用adb并运行像dmesg这样的linux命令来获取有关初始构建中出错的提示?你是否用其他任何东西得到关于出了什么问题的提示?
我想概述一下将Cyanogenmod移植到不同硬件所涉及的内容,以便我可以知道要学习什么,从哪里开始,以及从那里开始.
我对"强指针"和"弱指针"的概念感到困惑.Diane Hackborn自己说:
当有强大的指针时,物体将保持在周围; 一旦最后一个被释放它就会被销毁.使用弱指针可以做的就是比较并试图提升为强指针; 如果对象上没有其他强指针,后者将失败.
这对我来说还不太清楚.强指针是否等同于a(boost::)共享指针?弱指针的作用是什么,只是为了试图将自己推向强指针?比如,我们什么时候需要弱点和强点?
更新:
谢谢大家,但我专门询问有关Android的内核sp和wp,和他们无关,在所有的Java引用.
基本上我试图破解这里的代码http://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html
并不真正理解使用sp和wp
更新:
实际答案在于接受答案的评论.感谢Gabe Sechan:
强指针和弱指针是不同的智能指针实现,并且做同样的事情 - 当指针超出范围时,只要至少一个强指针引用它,它就不会被释放.如果只有弱指针(或没有)引用它.每当对其进行强或弱引用时,都会进行检查.
如果我有10个弱引用引用相同的对象,并且其中一个超出范围,该对象将被销毁?虽然有强指针,但只有当它们全部10个超出范围时才会销毁对象?
是的,差不多.如果你只有10个弱指针,当最后一个强指针超出范围时,它可能已经超出了范围.如果有剩余内存,实现可能会允许它延长一点时间,但如果你进入低内存条件它将被切断,并且听起来不像它的实现是从她的引用提前.并且使用它仍然主要是缓存 - 它大致相当于boost shared_ptr和boost weak_ptr.所以基本上,弱指针可以让它引用的对象随时消失.
我在使用repoAndroid源代码的最小方面遇到了很多简短的问题,或者对我们使用的内容进行了非常广泛的定义,repo结果并没有真正理解发生了什么repo.我按照Android Source网站上的说明操作.我这样做是repodir因为所有文件都与此相关.
repo init -u https://android.googlesource.com/platform/manifest
repo sync
Run Code Online (Sandbox Code Playgroud)
完成后,我的文件夹中充满了android类型文件夹(bionic,bootable等等)和一个隐藏.repo文件夹.值得注意的是,有一个ics-mr1与特定版本相关的文件夹,repodir它本身包含了大部分相同的文件夹.
repo init -u https://android.googlesource.com/platform/manifest -b gingerbread
repo sync
Run Code Online (Sandbox Code Playgroud)
这相对较快地完成,我看到的主要变化是现在有一个名为的文件夹gingerbread(所有原始文件夹似乎都保留).
我现在尝试这个并且需要时间:
repo init -u https://android.googlesource.com/platform/manifest -b android_4.2.2_r1
repo sync
Run Code Online (Sandbox Code Playgroud)
之后,它仍然包含相同的gingerbread和ics-mr1一些新的随机文件夹(如abi),但似乎没有任何新版本.
从结果来看,我看到我真的不明白我的行为到底是做什么以及如何实现我想要的.
如何获取master源的整个分支的本地版本,然后在我认为合适的情况下在分支之间正确更改?我现在的方式似乎是错误的,因为分支更改后留下的文件似乎不合逻辑.
为了进一步说明,有没有一种有效的方法同时拥有众多分支的本地副本,以便我可以比较每个分支的组成部分(显然每次都不重新下载它们)?
我问这些问题有很大的理解(我无法找到明确的一致信息),所以任何有关答案的额外信息都有助于理解实际做的事情.
android-source ×10
android ×8
c ×1
cyanogenmod ×1
frameworks ×1
git ×1
java ×1
makefile ×1
package ×1
perl ×1
perl-module ×1
porting ×1
repository ×1
x86 ×1