前言:
一开始因为这个ap涉及到收费,所以客户没有提供给我们,于是在网上找了个gms包集成,简单集成之后,发现没有起作用,但是此时客户把他们项目上的NLP provider(也就是这个apk)提供给我们了,我也就再没有去解决gms集成的问题,后面我将把gms后的情况发出来,现在我们变成了集成此apk就行。因为是同一个项目的不同版本软件,所以也就无所谓,我们临时使用。
信息了解
客户把这个apk甩给我我们就不管了,说自己集成,我查了资料,说这个是系统apk,但是没说集成的具体路径,我以前没集成过,所以比较懵,所以继续查资料,查到了应该安装在/system/app下面,目的地我们清楚了,下面就开始集成工作。
集成
1:临时方法,查看是否生效,否则继承了,结果不在这里生效,就白做了
- adb install apk 不可以指定路径,且只能安装在data下,所以此安装方式放弃
- adb push apk /system/app指定路径安装
于是采用push的方式,可对设备进行读写之后:
- adb push BaiduNetworkLocation.apk /system/app/.
- adb reboot //重启机器
- pm list package | grep BaiduNetworkLocation.apk//如果有此包,说明成功启动了
因为我这有一个更好的验证方法,就是解决一个bug,是高通平台的izat crash 弹窗,如果这个apk生效了,就不会有这个弹窗,push后重启,弹窗消失了,说明生效了。
2:验证生效后,选择集成在此路径下,我们直接参考此路径下的其他系统app,直接按TA的方式集成此app
参照此apk:getlogapk.apk
:/system/app $ ls
BasicDreams EasterEgg Protips
Bluetooth ExtShared SaveLogs
BluetoothMidiService HTMLViewer SimAppDialog
BookmarkProvider KeyChain Stk
CaptivePortalLogin LiveWallpapersPicker Traceur
CarrierDefaultApp MMIGroup Ulsee_calib
CertInstaller PacProcessor WallpaperBackup
CompanionDeviceManager PrintRecommendationService WapiCertManage
CtsShimPrebuilt PrintSpooler getlogapk
:/system/app $ cd getlogapk/
:/system/app/getlogapk $ ls
getlogapk.apk
我们直接在代码里搜这个apk,结果再这个路径下集成的:
/vendor/qcom/proprietary/Logapp/getlogapk
看截图:
里面放着要编译的mk和apk
然后开始了模仿之路
-
先将这个apk放在创建的BaiduNetworkLocation文件夹下:
/vendor/qcom/proprietary/Logapp/BaiduNetworkLocation/BaiduNetworkLocation.apk -
将mk拷贝过来,直接修改成这样:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := BaiduNetworkLocation
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/app
include $(BUILD_PREBUILT)
这两处修改好后需要在次级目录添加上这个编译:vendor/qcom/proprietary/Logapp/packages.mk
只展示了我修改的一部分:
#ifneq ($(TARGET_BUILD_VARIANT),user)
HQLOG_INIT += getlogapk
HQLOG_INIT += SaveLogs
HQLOG_INIT += getpersistlog
HQLOG_INIT += tcpdump
HQLOG_INIT += getqxdmlog
HQLOG_INIT += gettcpdump
HQLOG_INIT += stopqxdmlog
HQLOG_INIT += diag_mdlog_system
HQLOG_INIT += BaiduNetworkLocation
#endif
PRODUCT_PACKAGES += $(HQLOG_INIT)
把需要的包编译进去,添加了HQLOG_INIT += BaiduNetworkLocation,到这里,我们的集成就完成了,编译–>刷机–>验证–>ok
注意:
因为次级目录的andriod.mk里面是这样的:
LOG_APP_DIR:=$(call my-dir)
include $(call all-subdir-makefiles)
所以这里面不需要添加什么。