将 Android Studio 的项目放入Android 源码编译修改

        AndroidStudio是一款非常好用又强大的开发工具,现在大部分的人都采用的是这种工具。但这个工具也有一点缺陷就是不能直接放在Android的源码下编译,而Eclipse也可以的。所以要将Android Studio的项目放到源码下编译,需要转换。

(1)将Android Studio 的项目转化成Eclipse的项目运行;

           (1)新建一个Eclipse项目,将Android Studio   app\src\main/java目录下的文件拷贝到eclipse 的src目录下,将app\src\main/res 目录下文件拷贝到eclipse 的res目录下,同时也将AndroidManifest.xml替换;

          (2) 查看Android Studio app 目录下的build.gradle文件,发现

             

将Android Studio 中的 minSdkVersion 和  targetSdkVersion  转化成Eclipse中AndroidManifest.xml  

将 Android Studio 的项目放入Android 源码编译修改_第1张图片

 

查看Android Studio 的应用包jar,一般在Android Studio的目录下可以找到,我的是在C:\Users\Administrator\.gradle目录中,

将应用所要应用的jar文件找到,接下来就是在Eclipse中应用第三方jar 的问题了

     在Eclipse的项目中新建lins文件夹,将jar包放入改目录下,然后编写Android.mk文件

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 := TestApk
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_ENABLED := disabled
include $(BUILD_PACKAGE)

 

加入静态jar

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat 

预编译静态库

include $(CLEAR_VARS)
# 构建依赖的jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat :libs/android-support-v7-appcompat .jar

include $(BUILD_MULTI_PREBUILT)
 

最终的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 := TestApk
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_ENABLED := disabled

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat 
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
# 构建依赖的jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat :libs/android-support-v7-appcompat .jar

include $(BUILD_MULTI_PREBUILT)

 

(2)将Android Studio的项目直接放在Android源码下运行:

 

  (1) 将Android Studio的项目整个拷贝到Android源码下,新建一个Android.mk 文件;为上面的build.gradle文件为例做分析。

            第一,项目的AndroidManifest.xml  中添加

             

    第二,查看所需要的第三方jar库文件,根据

           //noinspection GradleCompatible,GradleCompatible
          implementation 'com.android.support:appcompat-v7:27.1.0'
          implementation 'com.android.support.constraint:constraint-layout:1.1.3'
          implementation 'com.android.support:recyclerview-v7:27.1.1'
         
    可以知道项目所需要的库文件为 android-support-v7-recyclerview  、 android-support-v7-appcompat  、constraint-layout-solver ,下载所需要的库文件,这里介绍一个好的网站:https://mvnrepository.com/

          第三,在项目app/mk目录下新建一个libs文件夹,将下载好的jar文件放入该目录下;

          第四,编写Android.mk文件:

 

LOCAL_PATH := $(call my-dir)
# 清除除了LOCAL_PATH外的所有变量
include $(CLEAR_VARS)
# support包的根目录,因为编译时我们只能引用来自于framework的support包
support_library_root_dir := frameworks/support


# 设置src 和 res
LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java)
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, app/src/main/res) \
    $(support_library_root_dir)/v7/appcompat/res

# 指定Manifest文件
LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml

LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

# 重复资源自动覆盖
LOCAL_AAPT_FLAGS += \
     --auto-add-overlay \
     --extra-packages android.support.v7.appcompat \
     --extra-packages android.support.constraint  \
     --extra-packages android.support.v7.recyclerview

# frameworks/support/ 下有v7 和 v4的源码
LOCAL_STATIC_ANDROID_LIBRARIES := android-support-v7-appcompat \
                               android-support-v4 \
                               android-support-annotations \
                               android-support-v7-recyclerview

# constraint-layout需要的jar
LOCAL_STATIC_JAVA_LIBRARIES := constraint-layout-solver

# 依赖库,aar
LOCAL_STATIC_JAVA_AAR_LIBRARIES := constraint-layout \
                                   recyclerview-v7
                                   

#ALLOW_MISSING_DEPENDENCIES :=true

# Apk名称
LOCAL_PACKAGE_NAME := Test

# BUILD_PACKAGE 是一个预定义的宏,里面包含编译一个APK的脚本。
include $(BUILD_PACKAGE)


include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := constraint-layout-solver:app/mk/libs/constraint-layout-solver-1.1.3.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += constraint-layout:app/mk/arrs/constraint-layout-1.1.3.aar 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += recyclerview-v7:app/mk/arrs/recyclerview-v7-27.1.1.aar 
include $(BUILD_MULTI_PREBUILT)


include $(call all-makefiles-under,$(LOCAL_PATH))

 

          第五:在Android项目的mk文件中加入Test

                    PRODUCT_PACKAGES += \

                                         Test

          第六;编译源码

 

        参考博客:https://www.jianshu.com/p/511a8247c859

你可能感兴趣的:(Android,Android.mk)