从Eclipse转战Android Studio坑之——百度地图

来源:互联网 发布:淘宝店铺代码在线生成 编辑:程序博客网 时间:2024/05/16 06:05

        相信大家都知道如果一个项目做到一半忽然要从Eclipse转战Android Studio那肯定不太容易 ,特别是在项目引用较多第三方平台的时候(因为很多第三方平台的SDK在两个开发工具上的导入和引用方式是有差别的),接下来我就来说说转战Android Studio坑之一——百度地图。

        此处建议跟我一样还在菜鸟阶级,但是不断努力学习的程度的小伙伴们,Eclipse和Android Studio用的SDK尽量统一用同一个,这样可以减少很多从Eclipse导入AS的项目的错误(*^__^*) 嘻嘻……

        当我把项目从Eclipse的路径Import到Android Studio的时候,什么事情都没做点击Run就出现了1千多个error,APP一运行起来就闪退了,但是却build successful,什么情况?这个时候密密麻麻的错误把我看傻了(暂时还没想到原来百度地图换个环境还需要换种导入引用方式)

               

                然后看着错误都是百度地图的错,于是我就开始阅读百度地图API开发者文档,一步一步进行设置(以下步骤是跟着百度地图文档步骤顺序来哒哈!):

第一步:就是获取百度地图的AppKey,当我创建应用到一半的时候发现我不知道AS的SHA1去哪里获取,百度了一下才发现原来AS的SHA1没有Eclipse的那么直观,然后我就跟着步骤操作

Android签名证书的sha1值获取方式:

使用keytool

第1步:运行进入控制台

and_key6.png and_key7.png

第2步:定位到.android文件夹下,输入cd .android

and_key8.png

第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:

其中keytool为jdk自带工具;keystorefile为Android 签名证书文件

and_key9.png


跟着以上步骤我的cmd报了以下错误

找了很久的原因才知道SHA1是根据签名生成的,所以要在AS软件的菜单build生成一个签名后在cmd操作命令行才可以成功(大家伙遇到此问题可以换个证书或者新建个签名就可以解决了)

and_key10.png



第二步:配置环境和发布,即根据项目需求拷贝百度地图相关的jar包和so文件,在这里我就给自己挖了个坑并把自己埋了大半天才爬出来。下面(1)(2)是百度文档的步骤

(1)在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,在src/main/目录下新建jniLibs目录,工程会自动加载src目录下的so动态库,放入libBaiduMapSDK_vX_X_X_X.so如下图所示,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。


(2)so的配置也可以参考demo给出的目录结构,如下图所示,在app工程路径下,新建libs,并在libs目录下放入对应不同CPU架构的so文件。这样工程并不会自动加载libs下的so,需在gradle编译时,通过加入代码: jniLibs.srcDir 'libs' 来说明so的路径为该libs路径。


但是,很奇怪我跟着明明乖乖跟着百度地图的文档做的啊~居然还报错


哎~我用的是文档里面的(2)方式引用so文件,但是把自己坑了好久才发现看漏了一句话,那就是在gradle中引用libs文件~~~~(>_<)~~~~

sourceSets {        main {            jniLibs.srcDir 'libs'        }        // Move the tests to tests/java, tests/res, etc...        instrumentTest.setRoot('tests')        // Move the build types to build-types/<type>        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...        // This moves them out of them default location under src/<type>/... which would        // conflict with src/ being used by the main source set.        // Adding new build types or product flavors should be accompanied        // by a similar customization.        debug.setRoot('build-types/debug')        release.setRoot('build-types/release')    }
用百度地图给我自己挖了两个坑,爬了半天才爬出来,在此做个笔记,以防万一下次再遇到又把自己给坑了~

0 0