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

Posted 峥嵘life

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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同时存在的情况。

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

以上是关于Android 系统apk源码目录结构匹配成Android Studio目录的主要内容,如果未能解决你的问题,请参考以下文章

如何用Android 源码生成APK签名文件

源码打包apk使用RecyclerView时遇到的坑

Android APK 签名打包原理分析APK结构分析

Android APK 签名打包原理分析APK结构分析

Android 程序目录及UI的简介

Android系统签名