andriod 集成三方apk(BaiduNetworkLocation.apk)

前言:

一开始因为这个ap涉及到收费,所以客户没有提供给我们,于是在网上找了个gms包集成,简单集成之后,发现没有起作用,但是此时客户把他们项目上的NLP provider(也就是这个apk)提供给我们了,我也就再没有去解决gms集成的问题,后面我将把gms后的情况发出来,现在我们变成了集成此apk就行。因为是同一个项目的不同版本软件,所以也就无所谓,我们临时使用。

信息了解

客户把这个apk甩给我我们就不管了,说自己集成,我查了资料,说这个是系统apk,但是没说集成的具体路径,我以前没集成过,所以比较懵,所以继续查资料,查到了应该安装在/system/app下面,目的地我们清楚了,下面就开始集成工作。

集成

1:临时方法,查看是否生效,否则继承了,结果不在这里生效,就白做了

  • adb install apk 不可以指定路径,且只能安装在data下,所以此安装方式放弃
  • adb push apk /system/app指定路径安装

于是采用push的方式,可对设备进行读写之后:

  1. adb push BaiduNetworkLocation.apk /system/app/.
  2. adb reboot //重启机器
  3. 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
然后开始了模仿之路

  1. 先将这个apk放在创建的BaiduNetworkLocation文件夹下:
    /vendor/qcom/proprietary/Logapp/BaiduNetworkLocation/BaiduNetworkLocation.apk

  2. 将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)

所以这里面不需要添加什么。

package xgpushdemo.qt.an.appmap; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationData; /*** * 百度定位、导航 * */ public class MainActivity extends Activity { private Button clickbtn; private TextView txt1; private TextView txt2; private MapView mMapView = null; private BaiduMap mBaiduMap=null; //定位相关申明 private LocationClient locationClient; //是否第一次定位 private Boolean isFirstloc=true; //是否开启 private Boolean isStart=true; private String la; private String lo; private String city; public BDLocationListener myListener=new BDLocationListener() { @Override public void onReceiveLocation(BDLocation bdLocation) { if(bdLocation==null||mMapView==null) return; MyLocationData myLocationData= new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(100). latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build(); mBaiduMap.setMyLocationData(myLocationData); city= bdLocation.getCity(); la=bdLocation.getLatitude()+""; lo=bdLocation.getLongitude()+""; // if(isFirstloc){ // isFirstloc=false; // LatLng ll=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()); // MapStatusUpdate mapStatusUpdate= MapStatusUpdateFactory.newLatLngZoom(ll,16); // mBaiduMap.animateMapStatus(mapStatusUpdate); // } } };
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值