您的位置:首页 > 移动开发 > Android开发

android studio添加so库

2016-01-29 19:10 519 查看
真是蛋疼,以前开过百度地图,这次直接复制过来使用,结果碰一鼻子灰,在这里好好总结下百度地图的步骤:1、在百度开放着平台申请密钥,这个不会的,看里面的说明把2、将百度地图所需要的包和so库文件拷到工程中,这里很容易出问题,在eclipse中,这两者的设置方式是一样的,但在as中,二者不是一致的.jar的包,放在libs中即可,但是.so库文件却不能这么简单的处理,网络上艘一下,有很多中方法,但总结出来就三种:a、直接将.so的文件放在libs目录下,然后在app的build.gradle中的android标签下添加sourceSets{main{jniLibs.srcDirs = ['libs']}}这样就把.so库文件编译成jar文件b、在main目录下,新建一个jniLibs文件夹,将armeabi的所有内容复制进去,然后就能直接编译进apk的包中了c、在其他地方新建lib文件夹,将armeabi的内容全部复制进去,然后压缩,命名为armeabi..jar并放入libs目录下即可3、在manifest文件中,对application进行添加修改如果是在自定义的application中进行初始化的话(官方推荐,因为application是最先执行的,而百度地图的初始化必须在set'ContentView()方法之前,所以建议在app中进行初始化,若在setContentView之后进行初始化,则会报错),则需要先在application的标签下添加
android:name=".app.MyApplication"
这样才会在运行的时候最先执行自定义的application然后需要添加第一步申请来的key,也是添加在application中
<meta-data最后
android:name="com.baidu.lbsapi.API_KEY"
android:value="geKdo2M1V4t6I5X7ClLkMOb7"/>
还需要添加service标签
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
</service>
还需要添加所需要的权限,我是复制了最完整的权限,直接复制即可
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK">
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
</uses-permission>
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络
1026c
定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
</uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
</uses-permission>
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- SD卡读取权限,用户写入离线定位数据 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
</uses-permission>
<!-- 允许应用读取低级别的系统日志文件 -->
<uses-permission android:name="android.permission.READ_LOGS">
</uses-permission>
如果这样就可以开始开发百度地图了。下面是完整的manifest文件
<?xml version="1.0" encoding="utf-8"?><manifestpackage="包名"android:installLocation="preferExternal"xmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:name=".app.MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="自己的key"/><service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
</service><activityandroid:name=".main.MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity></application><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/><uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --><uses-permission android:name="android.permission.GET_TASKS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.WRITE_SETTINGS"/><!-- 这个权限用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><!-- 这个权限用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!-- 用于读取手机当前的状态 --><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!-- 访问网络,网络定位需要上网 --><uses-permission android:name="android.permission.INTERNET"/><!-- SD卡读取权限,用户写入离线定位数据 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><!-- 允许应用读取低级别的系统日志文件 --><uses-permission android:name="android.permission.READ_LOGS"></uses-permission></manifest>
本人开发中遇到的问题:报错:Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]解决:这是cpu对armeabi中so文件的不匹配,只要分文件使用里面有五个型号的arm ,cpu'会自动对应,而每个文件夹的内容是一样的报错:Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]解决:在manifest文件中的头标签中添加
android:installLocation="preferExternal"
报错:
you have not supplyed the global app context info from SDKInitializer.initialize(Context) function
解决:百度地图的初始化必须在setContentView()之前

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  百度地图 android