android 4.0.1源码编译,学习错误解决

转载自:http://blog.csdn.net/sencha_android/article/details/7048669

主机是fedora 14   linux内核2.6.35.6    swapon交换分区1.5G   make -version 3.81(官方指定的make版本)jdk 1.6     

磁盘预留空间大概需要大于13G

具体的编译步骤可参考

Fedora 15编译Android源代码 

Android4.0.1 源码下载,模拟器编译和运行

问题1:

out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/classes)
Unrecognized option : 9999999
make: ***
[out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar]
Error 41
解决:安装jdk,并正确设置环境变量,具体参考上面列出的第一篇文章

问题二:
缺少libgl1的包

解决:在fedora下使用 yum install mesa-libGL-devel即可


问题三:
Processing target/product/generic/dex_bootjars/system/framework/core.jar+ n  s# Z5 J5 e8 j/ M. L) w. c( f

host/linux-x86/bin/dexopt: error while loading shared libraries: libdvm.so: cannot enable executable stack as shared object requires: Permission denied


解决:是使用的系统 fedora的问题,在fedora中suselinux默认设置了一些权限

在这里可以通过执行  setsebool allow_execstack=1 


问题四:

/usr/bin/ld: note: 'XInitThreads' is defined in DSO /usr/lib/libX11.so.
6 so try adding it to the linker command line
/usr/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status


解决:

在文件development/tools/emulator/opengl/host/renderer/Android.mk中加入
LOCAL_LDLIBS += -lX11


问题五:out of memory 或者是 collect2: ld terminated with signal 9 [Killed]


解决:android在后面的编译阶段内存占用量很高,如果没有设置swap交换分区,或者分区太小都会导致上述错误 ,

# dd if=/dev/zero of=/opt/other/swapfile bs=1024 count=1536K
# mkswap /opt/other/swapfile
# swapon /opt/other/swapfile
# swapon -s
Filename                Type      Size      Used    Priority
/opt/other/swapfile    file   1572860       0          -1

sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 
sudo chmod 600 /var/swapfile 
sudo mkswap /var/swapfile 
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab 
sudo swapon -a



问题六:acp: file 'out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests/data' does not exist

解决:在相应位置建立data目录即可(我在第一次编译的时候遇到了这个问题,按照此方法解决后又出现其他问题,删除out目录后重新编译,没有出现此问题及后续问题)


问题七:llvm-rs-cc:permission denied

解决:你可以到相应文件夹下 out/host/linux-x86/bin/llvm-rs-cc,查看此文件,即使你将所有权限有效,在运行会出现cannot execute binary file llvm-rs-c c,我没有找到解决办法,只是把out目录删除,重新编译就没有出现此问题。也没有出现上面的问题六。


倒腾了两天,终于是编出来了。貌似android的编译不是每次编译都是一样的,所有有人一次成功,还有人要纠结很久。贴图一张,祝大家成功阿!


问题八:修改android代码的过程中再进行编译出现You have tried to change the API from what has been previously approved.(修改了frameworks/base)

解决:make update-api


问题九:当想测试一个内置的应用程序时,使用mmm编译packages/experimental/xxx文件夹,会在generic/system/app下生成apk文件以及同名的xxx.odx文件,但是这个apk文件是不可以直接安装的,安装时出错。logcat会显示does not include classes.dex。

解决:‘发现Android的ROM中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用。’其实含有dex的文件在generic/obj/APPS下面的xxx_intermediates文件夹下,下面的xx.apk.unaligned和xxx.apk.unsingned是包含dex是可以安装的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值