问题描述
按照树中11.4.1节开始调用百度LBS API显示地图时,程序出现闪退现象,logcat中有以下信息
截图
可能原因
参考网上博文,导致这种情况的原因大概有这几个:
1.开发包勾选的服务不包含基础地图(含室内地图)
2.API配置信息有误
3.没有在setContentView(R.layout.activity_main);之前调用SDKInitializer.initialize(getApplicationContext());
4.添加jar包会导致其目录下的assert文件夹失效或者消失(疑惑)
解决方法
1.参照百度提供的方案下载开发包、完成配置,百度官方Android Studio配置方法
2.确保MainActivity.java中的两条语句的先后关系如下
SDKInitializer.initialize(getApplicationContext()); //先
setContentView(R.layout.activity_main); //后
3.如果确保上述两步无误后,程序依旧闪退,可尝试将BaiduLBS_Android.jar目录下的assert文件夹复制到src/main/下
我的目录结构和配置信息
项目目录结构
<!--AndroidManifest.xml -->
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lbstest">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--<uses-permission android:name="android.permission.WRITE_SETTINGS" />-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data android:name="com.baidu.lbsapi.API_KEY" //LBS
android:value="你的AK" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service //LBS
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
</service>
</application>
</manifest>
//app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.lbstest"
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
sourceSets { //添加的配置信息
main {
jniLibs.srcDir 'libs'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation files('libs\\BaiduLBS_Android.jar') //自动生成的LBS配置信息
}
参考自我在西边等太阳