|
AndroidStudio项目如何进行源码编译
发表于 2017-7-11 15:35:17
浏览:8807
|
回复:0
打印
只看该作者
[复制链接]
楼主
本帖最后由 梁开东 于 2017-7-20 20:59 编辑
我以android7.1的rk3399为例:
1. 首先编译系统源码:由于我用到的只是android上层居多,所以需要编译kernel、uboot 和android。
单独编译kernel:
cd ~/proj/firefly-rk3399/
./FFTools/make.sh -k -j8
单独编译uboot:
cd ~/proj/firefly-rk3399/
./FFTools/make.sh -u -j8
单独编译android上层:
cd ~/proj/firefly-rk3399/
./FFTools/make.sh -a -j8
同时编译ubooot、kernel、android:
cd ~/proj/firefly-rk3399/
./FFTools/make.sh -j8
2.将androidstudio项目copy到 packages/apps/ 目录下,不过androidstudio项目编译步骤:
(1)cd /proj/firefly-rk3399/
(2). FFTools/build.sh
(3)进入androidstudio项目中进行模块编译:
1)模块编译:
进入项目中:mm
没有进入项目:mm 项目路径
2)关联文件一起编译
mma
3)重新编译
mm -b
(1)和(2)只是第一次编译androidstudio项目才用到
3.如果androidstudio项目用到android:sharedUserId="android.uid.system"时则需要
在androidstudio项目中配置Android.mk文件(Android.mk路径一般在项目的根目录下),
androidstudio项目与eclipse项目在配置Android.mk文件有一小部分不一样:
比如:
eclipse项目的Android.mk:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v7-appcompat android-support-v7-recyclerview
- LOCAL_PACKAGE_NAME := SetupWizard
- LOCAL_CERTIFICATE := platform
- LOCAL_PRIVILEGED_MODULE := true
- LOCAL_MANIFEST_FILE := $(LOCAL_PATH)/AndroidManifest.xml
- LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
- LOCAL_SRC_FILES := $(call all-java-files-under, src )
- LOCAL_PROGUARD_FLAG_FILES := proguard.flags
- LOCAL_OVERRIDES_PACKAGES := Provision
- include frameworks/base/packages/SettingsLib/common.mk
- include $(BUILD_PACKAGE)
复制代码 androidstudio项目的Android.mk:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v7-appcompat android-support-v7-recyclerview
- LOCAL_PACKAGE_NAME := SetupWizard
- LOCAL_CERTIFICATE := platform
- LOCAL_PRIVILEGED_MODULE := true
- LOCAL_MANIFEST_FILE := $(LOCAL_PATH)/app/src/main/AndroidManifest.xml
- LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/app/src/main/res/
- LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java)
- LOCAL_PROGUARD_FLAG_FILES := proguard.flags
- LOCAL_OVERRIDES_PACKAGES := Provision
- include frameworks/base/packages/SettingsLib/common.mk
- include $(BUILD_PACKAGE)
复制代码 造成的原因是androidstudio项目的代码文件、资源文件和配置文件所在的路径有所改变
eclipse项目:代码文件、资源文件和配置文件一般是放在项目的根目录下
androidstudio项目:代码文件、资源文件和配置文件一般是放在app/src/main目录下
总体而言:androidstudio项目与eclipse项目在配置Android.mk文件应该是差不多的,只不过要注意文件路径。
android.mk中一些基本赋值方式:
= 是最基本的赋值。
:= 是覆盖之前的值。
?= 是如果没有被赋过值就赋予等号后面的值。
+= 是添加等号后面的值(可理解为追加等号后面的值)。
4.想了解Android.mk详细语法和具体如何操作:
http://android.mk/#mkVars
|
|