Android 系统apk源码目录结构匹配成Android Studio目录

Android 系统apk源码目录结构匹配成Android Studio目录

本文针对系统源码apk开发,一般是拥有整个Android源码的开发。

系统apk源码目录结构匹配成Android Studio目录的好处:

1、能够方便使用Studio查看代码、修改代码;
2、并且修改后容易对比,不用错开目录对比;
3、导入相关类库和系统签名文件,可以直接编译出系统应用。

一、Android系统源码默认目录结构和Studio目录结构区别

目录结构如下图所示:

在这里插入图片描述

左边是Android Studio的apk应用文件目录,右边的是系统源码的。

1、Android Studio有作用的文件:

1、src里面所有代码文件
2、app下的build.gradle
3、项目下的build.gradle
4、gradle.properties和settings.gredle
其他的都是生成的文件,比如gradle、.gradle、.adea、build.

2、系统源码中有作用的文件:

1、src里面所有java文件
2、res里面所有资源文件
3、AndroidMainfest.xml配置文件
4、Android.mk编译文件
5、部分项目有lib包文件夹,在Android.mk进行适配即可


二、适配Android源码目录结构

1、去除应用项目里面的非必要文件

2、整个项目应用文件夹复制到系统源码packages/apps/目录下

3、把之前的Android.mk文件放到项目应用根目录下

如下图所示:

在这里插入图片描述

适配之前的Android.mk

设置查找AndroidMainfest.xml、Java代码、资源文件代码的具体设置。

示例如下:

#define dir
src_dir = app/src/main/java
res_dir = app/src/main/res
manifest_dir = app/src/main/AndroidManifest.xml

#AndroidManifest.xml
LOCAL_MANIFEST_FILE := \
        $(manifest_dir)


#java next file is com.XX
LOCAL_SRC_FILES := \
        $(call all-java-files-under, $(src_dir))

# res
LOCAL_RESOURCE_DIR := \
    $(LOCAL_PATH)/$(res_dir)


一般工程是没配置AndroidManifest.xml位置的,未设置就是要在根目录java和res同一级目录。

三、一个完整系统apk的Android.mk文件示例代码如下:

LOCAL_PATH:= $(call my-dir)

#define dir
src_dir = app/src/main/java
res_dir = app/src/main/res
manifest_dir = app/src/main/AndroidManifest.xml

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := gson:app/lib/gson-2.8.0.jar

LOCAL_STATIC_ANDROID_LIBRARIES := \
    androidx.recyclerview_recyclerview \
    androidx.preference_preference \
    androidx.appcompat_appcompat \
    androidx.annotation_annotation \
    androidx.legacy_legacy-preference-v14 \
    androidx.leanback_leanback-preference \
    androidx.leanback_leanback \

LOCAL_USE_AAPT2 := true

#AndroidManifest.xml
LOCAL_MANIFEST_FILE := \
        $(manifest_dir)


#java next file is com.XX
LOCAL_SRC_FILES := \
        $(call all-java-files-under, $(src_dir))

# res
LOCAL_RESOURCE_DIR := \
    $(LOCAL_PATH)/$(res_dir)


LOCAL_STATIC_JAVA_LIBRARIES := \
	com.hw.service \
	gson \
	com.mediatek.mtkaudiopatchmanager

LOCAL_PRIVATE_PLATFORM_APIS := true

LOCAL_PACKAGE_NAME := MyMenuUi
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
#LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)

上面的编译一个系统权限的系统apk,供大家参考。

其他需要注意的地方:
如果是自研的Settings应用,需要导入framework.jar和SettingsLib.jar,
要使用压缩软件打开后,删除掉jar包中的support包内容,
不然Studio不支持编译support和androidx同时存在的情况。

共勉:珍惜存在的机会,并且加倍努力。

猜你喜欢

转载自blog.csdn.net/wenzhi20102321/article/details/122889935