`
fable0618
  • 浏览: 47622 次
  • 性别: Icon_minigender_2
  • 来自: 火星
文章分类
社区版块
存档分类

安卓系统集成第三方apk

 
阅读更多

项目集成所需文件清单,需拷贝至ANDROID_SOURCE/packages/app/PROJECT_NAME/目录下

PROJECT_NAME
    │  Android.mk
    │  AndroidManifest.xml
    ├─libs[若包含jar包、静态库或动态库]
    ├─res
    └─src

 

src、res、AndroidManifest.xml皆为普通应用程序会包含内容(项目下gen文件夹不要放进源码,会报错)以下主要对Android.mk做说明。直接上mk内容:

 

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

 

 

 

1、外部jar包依赖

LOCAL_STATIC_JAVA_LIBRARIES := mirror androidsupport

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := mirror:libs/mirrorcastandroid4.jar androidsupport:libs/android-support-v4.jar

LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)

 

2、依赖动态库

LOCAL_PREBUILT_LIBS :=libjpeg-turbo:libs/armeabi/libjpeg-turbo.so liblinkyuv:libs/armeabi/liblinkyuv.so

 

以上注意参数 LOCAL_MODULE_TAGS := optional 的值,optional直接make时不会将相应的.so输出至system/lib下,对应TARGET_BUILD_VARIANT=eng的值(TARGET_BUILD_VARIANT指定编译形成的版本风格,一般发布时使用这个值,当然还有user、debuguser等风格值),即会输出

 

编译eng[即debug]版本和user[即release]版本会存在差异,可能遇到如下错误

错误一:

 

build/core/base_rules.mk:64: *** Module name: libjpeg-turbo
build/core/base_rules.mk:65: *** Makefile location: packages/apps/*****/Android.mk
build/core/base_rules.mk:66: *
build/core/base_rules.mk:67: * Module is attempting to use the 'user' tag.  This
build/core/base_rules.mk:68: * used to cause the module to be installed automatically.
build/core/base_rules.mk:69: * Now, the module must be listed in the PRODUCT_PACKAGES
build/core/base_rules.mk:70: * section of a product makefile to have it installed.
build/core/base_rules.mk:71: *
build/core/base_rules.mk:72: *** user tag detected on module..  Stop.
 

 

如log输出详细所示,系统依赖库需要在PRODUCT_PACKAGES中作声明,即需修改build/target/product/generic_*.mk文件[generic_no_telephony.mk]

# my product apps
PRODUCT_PACKAGES += \
    libktuart \
    libBT \
    libOUT \
    libUpdate \    
    libjpeg-turbo

 

错误二:

Warning: library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.util.Xml depends on program class org.xmlpull.v1.XmlSerializer
Warning: library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Note: there were 5 unresolved dynamic references to classes or interfaces.
      You should check if you need to specify additional program jars.
Note: there were 2 class casts of dynamically created class instances.
      You might consider explicitly keeping the mentioned classes and/or
      their implementations (using '-keep').
Note: there were 2 accesses to class members by means of introspection.
      You should consider explicitly keeping the mentioned class members
      (using '-keep' or '-keepclassmembers').
Warning: there were 78 instances of library classes depending on program classes.
         You must avoid such dependencies, since the program classes will
         be processed, while the library classes will remain unchanged.
Error: Please correct the above warnings first.
make: *** [out/target/common/obj/APPS/******_intermediates/proguard.classes.jar] Error 1
make: Leaving directory `/home/android'

 

错误二解决:

发生以上错误是由于编译release版本时默认会对所有应用程序进行混淆编译,某些文件所包含的警告信息不允许存在。可进行混淆配置,先修改Android.mk,可选择关掉系统对当前app的混淆,或自定义混淆配置文件proguard-project.txt

#LOCAL_PROGUARD_ENABLED := disabled
LOCAL_PROGUARD_FLAG_FILES := proguard-project.txt

 

proguard-project.txt文件内容

1、忽略警告提示。如项目工程内有加入安卓源码,并存在修改,如下

-dontwarn android.hardware.usb.**

2、部门java类不需要做混淆。如某些方法是native jni方法,或某些方法是给c层调用,无需做混淆:

-keep class com.test.TestNative{*;}

分享到:
评论

相关推荐

    Android应用开发中使用第三方字体

    在Android应用开发中,为了实现更具个性化或者符合品牌特色的用户界面,我们经常需要引入第三方字体。这个Demo就是针对这一需求,展示了如何在Android项目中集成和使用非系统默认的字体。接下来,我们将深入探讨...

    android安装系统目录下的APK包

    1. **获取APK文件**:首先,你需要拥有APK文件,这可以通过从Google Play商店下载,或者从第三方应用市场、开发者网站获取。如果你有APK的本地副本,通常会保存在 `/sdcard/Download` 或者自定义的下载路径中。 2. ...

    安卓新手第一步 apk文件怎么安装

    除了使用电脑客户端,你还可以下载第三方应用商店如豌豆荚、安智市场等,它们提供了丰富的APK资源。在这些应用商店中,可以直接搜索并下载安装应用,无需电脑协助。 4. **安全注意事项** 在安装非Google Play ...

    andoid studio中JNI调用第三方库例子

    这个"hello-libs"示例项目是一个很好的学习资源,它展示了如何将第三方.so库集成到Android应用中,并通过JNI进行调用。通过研究这个例子,开发者可以深入了解Android Studio的NDK支持,掌握JNI的使用技巧,这对于...

    对讲机软件apk

    标题中的“对讲机软件apk”指的是Android操作系统上的应用程序,通常称为APK文件,它是Android平台上安装和运行软件的包文件格式。APK文件包含了应用的所有组成部分,包括代码、资源文件、图片、XML配置等。对讲机...

    Android.mk编译内置无源码apk

    在Android系统中,为了使第三方应用能够被系统识别并预装在设备上,我们需要通过特定的构建机制将这些应用编译并集成到系统的镜像中。`Android.mk`文件是Android构建系统的关键部分,用于定义模块属性和编译规则。在...

    Unity接入第三方支付宝支付安卓端工程

    在Unity3D游戏开发中,集成第三方支付服务如支付宝,是提供给用户便捷充值和购买虚拟商品的重要途径。本文将详细讲解如何在Unity3D环境中接入Android端的支付宝支付服务。 首先,我们需要了解Unity3D的基本工作流程...

    android 引用第三方库的方法

    首先,我们需要了解Android Studio是目前主流的Android集成开发环境,它支持Gradle构建系统,这使得添加第三方库变得非常便捷。以下是引用第三方库的基本步骤: 1. **Gradle依赖**: 在`build.gradle`(Module: ...

    详解android.mk中引用第三方库的方法

    一、集成第三方jar包 在Android.mk文件中引用第三方jar包需要进行以下步骤: 1. 在项目目录下创建libs目录,将第三方jar包放入该目录下。 2. 在Android.mk文件中进行配置,使用include $(CLEAR_VARS)和LOCAL_...

    第三方车载语音助手.zip

    "第三方车载语音助手.zip"这个压缩包文件集成了多种知名的车载语音助手解决方案,包括百度语音、语音魔方、车助理小芳、高德语音助手、同行者语音助手以及思必驰声控20170918和高德语音助手的第三方版本。...

    安卓手机运行Python代码的apk文件.zip

    在Android系统上运行Python,通常需要第三方应用的支持,如QPython。标签“安卓手机运行python”正是对应这种需求。压缩包中的文件名称表明了这可能是一个QPython的安装包集合: 1. "qpython_os_2020-02-14_os.apk...

    Android中的自动化集成APK优化操作.pdf

    在手机产品开发过程中,会涉及到很多第三方应用的集成问题,有些应用需要集成到system区,有些应用需要集成到data区。传统的开发方式是需要系统工程师将APK解包,取出其中的so文件和APK文件一起添加到源码下的某一...

    Android APK管理器

    它可以处理第三方应用的安装,这对于喜欢尝试非Google Play商店应用的用户来说是个实用工具。同时,通过管理功能,用户可以更好地掌控自己的设备,提高使用体验。 总之,Android APK管理器是Android设备上的一款...

    安卓社会化分享第三方登录相关-QQ相关第三方登录.rar

    本压缩包"安卓社会化分享第三方登录相关-QQ相关第三方登录.rar"包含了关于QQ第三方登录的相关代码和资源,下面将详细介绍这一主题。 QQ第三方登录是通过QQ开放平台提供的SDK,允许用户使用QQ账号登录应用,同时获取...

    Android-MyButler开发一个汇聚热门第三方的的App

    在这个过程中,我们将涉及Android开发的基础知识、第三方API的集成以及用户体验设计等多个关键环节。 首先,了解Android开发环境的搭建至关重要。开发者需要安装Android Studio,这是一个强大的集成开发环境(IDE)...

    查看Android apk包信息

    另一种是使用第三方工具,比如`APK Insight`或`APK Editor`,这些工具能直接显示APK的详细信息,包括签名、资源、代码等。 在日常使用中,了解APK包信息对于调试、分析应用行为、评估安全风险以及优化兼容性都十分...

    安卓apk.1安装器v1.9 可直接在微信安装apk文件.txt打包整理.zip

    2. **微信内安装APK**:通常情况下,Android系统不允许非谷歌Play商店的应用直接安装,但有些第三方工具或特定的应用允许绕过这一限制。"安卓apk.1安装器v1.9"可能就是这样的工具,它允许用户在微信环境中直接安装...

    android的apk反编译

    1. **SDK集成**:应用程序通常会集成第三方广告SDK来展示广告。 2. **XML配置**:在`res/layout`目录下的XML布局文件中添加特定的广告组件代码。 3. **下载源**:广告数据需要从指定的服务器下载。 ##### 3.2 常见...

    我的几个android项目apk

    6. **网络编程**:Android应用经常需要与服务器通信,赵明可能使用HttpURLConnection或第三方库如Retrofit、OkHttp进行网络请求。 7. **异步处理**:为了防止应用因长时间操作而阻塞UI线程,赵明可能运用了...

Global site tag (gtag.js) - Google Analytics