【Android】第三方库使用的问题集

Google/百度地图Key的获取

百度地图UnsatisfiedLinkError错误

async-http-client中的FATAL EXCEPTION

  •  Google/百度地图Key的获取

  无论是Google Map还是百度地图,在使用它们提供的API的时候,都需要申请一个密钥,而这个密钥,都跟SHA1码有关,这个码可以通过下面的方法获取:

  方法一:这个方法很简单,但不是所有的eclipse版本都可以,那就是通过eclipse工具栏window-preferences-Android-build里面可以看到SHA1的值。

  方法二:运行过android应用之后就会出现debug.keystore这个文件,这时候开命令行运行下面的指令就可以看到指纹签名,keytool这个命令是在JDK/bin下面:

keytool -list -v -keystore "%USERPROFILE%.androiddebug.keystore" -alias androiddebugkey -storepass android -keypass android
  •  有些朋友在用百度地图API进行Android开发的时候可能会碰到下面这个异常:
Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()I

网上很多回答呢是说参考百度地图官方的demo,要写一个Application类,然后在manifest文件中引用。

其实完全没有必要,那个Application类其实就是在对BMapManager进行init而已。

如果还没有调用BMapManager的init就去解析带有MapView的xml文件,就会出现上面那个错误。所以大多数朋友都是因为把这条初始化的语句放到了加载布局文件的后面。

所以解决方案就是:在setContentView或者inflate之前调用BMapManager.init就可以了。

  •  async-http-client中的AndroidRuntime FATAL EXCEPTION

AndroidRuntime FATAL EXCEPTION:Thread-xxxx

AndroidRuntime java.lang.NullPointerException

AndroidRuntime at com.loopj.android.http.AsyncHttpResponseHandler.postRunnable(AsyncHttpResponseHandler.java)...

这个的问题很简单,那就是这个库进行联网操作的函数(get、post)不能在多线程里做,只能在主线程里完成。

原文地址:https://www.cnblogs.com/smarterplanet/p/3674187.html