项目集成所需文件清单,需拷贝至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应用开发中,为了实现更具个性化或者符合品牌特色的用户界面,我们经常需要引入第三方字体。这个Demo就是针对这一需求,展示了如何在Android项目中集成和使用非系统默认的字体。接下来,我们将深入探讨...
1. **获取APK文件**:首先,你需要拥有APK文件,这可以通过从Google Play商店下载,或者从第三方应用市场、开发者网站获取。如果你有APK的本地副本,通常会保存在 `/sdcard/Download` 或者自定义的下载路径中。 2. ...
除了使用电脑客户端,你还可以下载第三方应用商店如豌豆荚、安智市场等,它们提供了丰富的APK资源。在这些应用商店中,可以直接搜索并下载安装应用,无需电脑协助。 4. **安全注意事项** 在安装非Google Play ...
这个"hello-libs"示例项目是一个很好的学习资源,它展示了如何将第三方.so库集成到Android应用中,并通过JNI进行调用。通过研究这个例子,开发者可以深入了解Android Studio的NDK支持,掌握JNI的使用技巧,这对于...
在Android系统中,为了使第三方应用能够被系统识别并预装在设备上,我们需要通过特定的构建机制将这些应用编译并集成到系统的镜像中。`Android.mk`文件是Android构建系统的关键部分,用于定义模块属性和编译规则。在...
首先,我们需要了解Android Studio是目前主流的Android集成开发环境,它支持Gradle构建系统,这使得添加第三方库变得非常便捷。以下是引用第三方库的基本步骤: 1. **Gradle依赖**: 在`build.gradle`(Module: ...
在Unity3D游戏开发中,集成第三方支付服务如支付宝,是提供给用户便捷充值和购买虚拟商品的重要途径。本文将详细讲解如何在Unity3D环境中接入Android端的支付宝支付服务。 首先,我们需要了解Unity3D的基本工作流程...
一、集成第三方jar包 在Android.mk文件中引用第三方jar包需要进行以下步骤: 1. 在项目目录下创建libs目录,将第三方jar包放入该目录下。 2. 在Android.mk文件中进行配置,使用include $(CLEAR_VARS)和LOCAL_...
"第三方车载语音助手.zip"这个压缩包文件集成了多种知名的车载语音助手解决方案,包括百度语音、语音魔方、车助理小芳、高德语音助手、同行者语音助手以及思必驰声控20170918和高德语音助手的第三方版本。...
在Android系统上运行Python,通常需要第三方应用的支持,如QPython。标签“安卓手机运行python”正是对应这种需求。压缩包中的文件名称表明了这可能是一个QPython的安装包集合: 1. "qpython_os_2020-02-14_os.apk...
在手机产品开发过程中,会涉及到很多第三方应用的集成问题,有些应用需要集成到system区,有些应用需要集成到data区。传统的开发方式是需要系统工程师将APK解包,取出其中的so文件和APK文件一起添加到源码下的某一...
它可以处理第三方应用的安装,这对于喜欢尝试非Google Play商店应用的用户来说是个实用工具。同时,通过管理功能,用户可以更好地掌控自己的设备,提高使用体验。 总之,Android APK管理器是Android设备上的一款...
本压缩包"安卓社会化分享第三方登录相关-QQ相关第三方登录.rar"包含了关于QQ第三方登录的相关代码和资源,下面将详细介绍这一主题。 QQ第三方登录是通过QQ开放平台提供的SDK,允许用户使用QQ账号登录应用,同时获取...
在这个过程中,我们将涉及Android开发的基础知识、第三方API的集成以及用户体验设计等多个关键环节。 首先,了解Android开发环境的搭建至关重要。开发者需要安装Android Studio,这是一个强大的集成开发环境(IDE)...
另一种是使用第三方工具,比如`APK Insight`或`APK Editor`,这些工具能直接显示APK的详细信息,包括签名、资源、代码等。 在日常使用中,了解APK包信息对于调试、分析应用行为、评估安全风险以及优化兼容性都十分...
2. **微信内安装APK**:通常情况下,Android系统不允许非谷歌Play商店的应用直接安装,但有些第三方工具或特定的应用允许绕过这一限制。"安卓apk.1安装器v1.9"可能就是这样的工具,它允许用户在微信环境中直接安装...
1. **SDK集成**:应用程序通常会集成第三方广告SDK来展示广告。 2. **XML配置**:在`res/layout`目录下的XML布局文件中添加特定的广告组件代码。 3. **下载源**:广告数据需要从指定的服务器下载。 ##### 3.2 常见...
6. **网络编程**:Android应用经常需要与服务器通信,赵明可能使用HttpURLConnection或第三方库如Retrofit、OkHttp进行网络请求。 7. **异步处理**:为了防止应用因长时间操作而阻塞UI线程,赵明可能运用了...
5. **服务集成**:如果需要,向导可能需要与Google服务或其他第三方服务进行集成,例如设置Google账户。 通过分析"Provision.apk demo 安卓开机向导.pdf"这份文档,开发者可以深入了解Android开机向导的工作原理,...