参考:http://blog.csdn.net/u011913612/article/details/72732177
Android studio 工程导入源码中编译步骤:(以OkhttpDemo工程为例)
1、package/apps目录下新建文件夹(如MyOkhttpDemo),并在MyOkhttpDemo目录下新建src文件夹
2、将OkhttpDemo工程目录中的AndroidManifest.xml文件拷贝到MyOkhttpDemo目录
3、将OkhttpDemo工程目录中的res文件夹拷贝到MyOkhttpDemo目录
4、将OkhttpDemo工程目录中的com文件夹(即包名目录)拷贝到MyOkhttpDemo目录的src文件夹里
5、将OkhttpDemo工程目录中libs文件夹拷贝到MyOkhttpDemo目录里(jar包都放在libs目录下)
6、在MyOkhttpDemo目录下新建一个Android.mk文件
整个工程目录如下:
vendor\amlogic\apps\MyOkhttpDemo
libs文件夹
src文件夹
res文件夹
Android.mk文件
AndroidManifest.xml文件
其中Android.mk文件内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := GsonDemo
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
# LOCAL_SDK_VERSION := current
LOCAL_DEX_PREOPT := false
LOCAL_RESOURCE_DIR := vendor/amlogic/apps/GsonDemo/res
ifeq ($(TARGET_BUILD_APPS),)
LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
else
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
endif
LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v7-appcompat \
android-support-v4 \
libokhttp \
libokio
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.v7.appcompat
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
libokhttp:libs/okhttp-3.9.0.jar \
libokio:libs/okio-1.13.0.jar
include $(BUILD_MULTI_PREBUILT)
也就是说引入jar包主要依赖的是 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 和 LOCAL_STATIC_JAVA_LIBRARIES
如果需要引入so库,只需要把so库放置到libs目录下,然后在Android.mk中通过LOCAL_SHARED_LIBRARIES变量完成引用即可。
编译命令
. build/envsetup.sh
lunch
cd package/apps/MyOkhttpDemo
mm
adb install 安装apk出现
Failure [INSTALL_FAILED_DEXOPT]
log信息:
10-13 16:22:54.477 30849-30849/? E/dex2oat: Failed to open dex from file descriptor for zip file ‘/data/app/com.skynoon.myokhttpdemo-1/base.apk’: Failed to open dex file ‘/data/app/com.skynoon.myokhttpdemo-1/base.apk’ from memory: Unrecognized version number in /data/app/com.skynoon.myokhttpdemo-1/base.apk: 0 3 7
10-13 16:22:54.714 352-352/? E/installd: DexInv: — END ‘/data/app/com.skynoon.myokhttpdemo-1/base.apk’ — status=0x0100, process failed
出现这个问题的原因:
是在7.1平台上编译,然后把apk安装到6.0或者5.0系统上
在7.1平台(release_n_7.1_20170804)下可以编译,但是无法安装。(编译的java版本为1.8)
在6.0平台(release_s905_m_20160907)下可以编译,可以安装,并正常运行在6.0和5.0系统(编译的java版本都是1.7)
本文详细介绍了如何在Android源码中编译Android Studio工程OkhttpDemo,包括创建新目录结构、复制必要文件和配置Android.mk文件。在编译过程中遇到的 DexOpt 失败问题,主要是由于在7.1平台上编译的apk尝试安装在6.0或5.0系统上导致的。解决方案是确保编译环境与目标系统版本匹配。
1415

被折叠的 条评论
为什么被折叠?



