梁开东 发表于 2017-7-11 15:35:17

AndroidStudio项目如何进行源码编译

本帖最后由 梁开东 于 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-appcompatandroid-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-appcompatandroid-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

页: [1]
查看完整版本: AndroidStudio项目如何进行源码编译