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目录的主要内容,如果未能解决你的问题,请参考以下文章