在ubuntu-12.04.3下搭建编译android4.4源代码-编译源码部分问题及sdk编译

这篇主要讲下源码编译的问题

先上两个博主的文章,里面都很详细的写了整个源码环境到编译的过程,大家可以参考下

http://www.jianshu.com/p/367f0886e62b

http://www.jianshu.com/p/6d97b4a10b18


-编译自己的项目,只试过eclipse编译出来的项目,要是想用as项目,看这里http://blog.csdn.net/dzy_mails/article/details/51909112

(这个只是最简单的版本,要想编译使用了第三方的jar包,.so文件等的项目,需要大家自己去百度一下了)

1.      首先在windows环境下编写了工程文件


2.      打开linux开发环境(android4.4)

a)        文件夹/home/rui/android4.4(我自己指定的,每个人的都不一样)

3.      将运行环境的脚步文件允许一下以便可以mm

a)       在源码的根目录 执行 :

source build/envsetup.sh

d)        注意,所以得操作都要在这个终端下进行

4.      将工程文件拷贝到指定目录下
/home/rui/android4.4/packages/apps/


5.      删除一些文件

a)        只留下/res,/src, AndroidManifest.xml三个文件


b)        在工程文件夹中创建一个名为Android.mk文件

6.      编译

a)        工程文件在
/home/rui/android4.4/packages/apps/usbtest

b)        进入以后,输入命令
mm

c)        如果没有报错的话就进行下一步操作

7.      拷贝apk到windows下

a)        生产的apk文件在特殊的文件夹下面,路径为:
android/android4.4/out/target/product/generic/system/app


---下面是.mk文件的例子

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := usbtest  #你在app/目录下的文件夹名字

LOCAL_CERTIFICATE := platform  #这个是获取系统权限

LOCAL_DEX_PREOPT := false  #不加上这个就会生成两个文件 .apk 和.odex ,我们一般是生成一个完整的apk,所以要加上

include $(BUILD_PACKAGE)

----编译项目的后如果想重新编译,又提示make: 没有什么可以做的为 `all_modules'

在adnroid4.4根目录使用命令:

1,source ./build/envsetup.sh

2, lunch 然后选择相应平台(1)我都是选择一,不行就选择10

3, touch packages/apps/Settings(更新)

4,mmm packages/apps/Settings


2.编译sdk 

在adnroid4.4根目录使用命令:

1.source ./build/envsetup.sh

2. make sdk 


不过一般这样是不行的,会报Module 'bluetooth-health' in PRODUCT_PACKAGES has nothing to install 错误

这个时候就要将 make sdk 改成make PRODUCT-sdk-sdk

如下

Install: out/host/linux-x86/framework/liblzf.jar
## Running sdk/eclipse/scripts/create_all_symlinks.sh
### Starting tools/base: gradlew publishLocal
sdk/eclipse/scripts/create_all_symlinks.sh: line 285: cd: tools/base: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/monitor_intermediates/monitor] Error 1

报错很明显,toos/base这个目录或文件找不到,网上搜了下,答案是这个文件在.repo中,需要去同步下载更新,no no no...按照这个方法,什么时候才能下载下来,接着搜索,终于找到了一个粗暴而简单的的解决办法,不知道有没有后遗症;办法是把所有用到tools/base的地方都注释掉,文件所在路径如下:

/home/zhangyipeng/Documents/android4.4/sdk/eclipse/scripts/create_all_symlinks.sh

使用sublime text打开,找到所有tools/base的使用地方注释掉,继续make sdk,过了1分钟又来了一个错误,还是这个create_all_symlinks.sh文件中的tools/swt: No such file or directory ,继续把tools/swt相关的地方注释掉,
修改的几个地方如下图:


Paste_Image.png

Paste_Image.png

Paste_Image.png
(注意:这里要找到全部的tools/base 屏蔽掉,不然会再次报错

接着make sdk,再继续在编译...

3.等了近20分钟,又出现了一个类似的错误:

Install: out/host/linux-x86/framework/liblzf.jar
## Running sdk/eclipse/scripts/create_all_symlinks.sh
### Starting tools/base: gradlew publishLocal
sdk/build/toos.atree: line 124: cd: tools/base: No such file or directory

文件位置:

/home/zhangyipeng/Documents/android4.4/sdk/build/toos.atree

修改如下图:


Paste_Image.png


以上问题参考网站:
http://blog.csdn.net/lincyang/article/details/48630185/
http://blog.sina.com.cn/s/blog_4ba5b45e0102ejyg.html

4.最后一次make sdk,大概10分钟过去了,终于迎来了胜利的曙光^_^


Paste_Image.png

生成的sdk所在位置:就在上面的out 路径里面,然后就可以使用了

使用SDK

将android-sdk_eng.linc_linux-x86.zip解压到你喜欢的目录,在Android Studio的设置如下: 
File—>Project Structure—>SDK Location,填写你刚刚解压的目录即可。 
试着用自定义的API做测试吧,good luck!

这里有个问题: 你有可能打不开sdk文件夹,所以需要增加下权限

先 cd到 /linux-x86

 chmod 777 sdk    (更改下文件夹权限)

这个时候就可以打开了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值