編輯:關於Android編程
前言:
之前開發項目用到百度地圖,測試的時候沒有問題;但是,一打包加混淆之後就出現地圖崩潰的問題;項目已經完結,趁有閒暇時間趕緊分享一下自己的解決方案。
問題現象:
之前做百度地圖開發時出現一些小問題、一搜發現大家似乎都遇到過這樣的問題、大家知道百度地圖API需要申請Key,填寫安全碼。
安全碼的組成規則為:Android簽名證書的sha1值 “;” packagename(即:數字簽名 分號 包名)
debug的話、代碼沒有經過混淆、百度地圖正常使用、只有在打包之後才有這個問題。
但是呢、基本上發布到應用市場的apk一般都是經過加密的、有點知識產權保護意識的都會有代碼混淆、
就會用一套自己的keystore,重新設定“安全碼後”、導出apk時沒有報任何錯誤
但是當我裝載手機上使用百度地圖定位時、地圖繪制了一大半、就死掉了、留下log控制台有這麼句話
com.baidu.platform.comapi.map.MapRenderer.nativeRender(Native Method)
分析原因:
這裡只貼了一句、還有很多異常信息哈、經過google查找、然後把百度地圖官網又仔細讀了便、果然功夫不負有心人、還是讓我找到了、其實官方已經明確指出了
3.6.5 為何我的程序在不混淆之前可以運行,混淆之後不能運行了?
柵格版SDK(即1.3.5及之前的版本):
如果您使用proguard進行混淆,請在您的混淆配置文件中添加如下語句:
-keep class com.baidu.mapapi.** {*;}
矢量版SDK(即2.0.0及之後的版本):
如果是用proguard ,以下配置供參考:
#-libraryjars libs/baidumapapi_v3_1_0.jar 替換成自己所用版本的jar -keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;}其他混淆工具也請進行與此類似的配置,指定對mapapi中的類和方法不進行混淆。
解決方案
在proguard-project.txt中添加如下(引用的是百度baidumapapi_v3_1_0.jar這版的jar包、換成自己的包就好了)、
-libraryjars libs/baidumapapi_v3_3_0.jar -keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;}
-keep class vi.com.gdi.bgl.android.**{*;}
有人在群裡問他實現的倒計時在ListView中很卡,有沒有好的方案,我就閒來沒事,實現了一下,供參考 package com.microchange;impor
Android中Service的一個Demo例子Service組件是Android系統重要的一部分,網上看了代碼,很簡單,但要想熟練使用還是需要Coding。本文,主要貼
ListView在android開放中用的比較多,所以接下來就進行ListView的使用的講解。 首先創建一個android項目,項目名為ListViewTest. Li
前言本篇文章帶大家體驗一下一種具有擴展性的適配器寫法。這個適配器主要用於Item有多種的情況下,當然只有一種類型也是適用的實現毫無疑問我們要繼承BaseAdapter,重