MapBox android : https://github.com/mapbox/mapbox-gl-native/tree/master/platform/android
编译参考blog : https://www.jianshu.com/p/ec4c7602b934
进入正题:
-
下载源码git clone,download(无论是那种姿势,下载下来就行)
-
通过Android studio打开(我的as版本是3.0.1)
-
打开后会报错
-
很明显缺少配置文件,暂且先不管,先注释掉项目根目录下的gradle中缺失的文件,然后点下标题栏的锥子!
-
嗯,还是没有编译完成,咱不急,接着看报错,Message中的提示不明显,看Gradle Console
-
PluginCrashReporter这个说明我么少插件,Settings->Appearance&Behavior->System Settings->Android SDk点击SDK Tools下载CMake,LLDB,NDk,再次点击小锤子
4.编译后没成功,嗯,这是正常现象,哈哈 -
这样吧,直接来大招,我们直接看项目MapboxGLAndroidSDKTestApp的gradle
-
好多东西啊,abi,node,npm,貌似跟项目没啥关系,直接删吧(不敢删的先注释掉),最后成这样,看着简洁多了,有木有
`apply plugin: ‘com.android.application’
android {
compileSdkVersion androidVersions.compileSdkVersion
defaultConfig {
applicationId "com.mapbox.mapboxsdk.testapp"
minSdkVersion androidVersions.minSdkVersion
targetSdkVersion androidVersions.targetSdkVersion
versionCode 13
versionName "6.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'LICENSE.txt'
}
lintOptions {
baseline file("lint-baseline-local.xml")
checkAllWarnings true
warningsAsErrors true
disable 'MissingTranslation', 'GoogleAppIndexingWarning', 'UnpackedNativeCode', 'IconDipSize', 'TypographyQuotes'
abortOnError false
}
buildTypes {
debug {
testCoverageEnabled true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
dexOptions {
maxProcessCount 8
javaMaxHeapSize "2g"
preDexLibraries true
}
}
dependencies {
implementation dependenciesList.kotlinLib
implementation project(':MapboxGLAndroidSDK')
implementation dependenciesList.mapboxJavaTurf
implementation dependenciesList.supportAppcompatV7
implementation dependenciesList.supportRecyclerView
implementation dependenciesList.supportDesign
implementation dependenciesList.supportConstraintLayout
implementation dependenciesList.gmsLocation
implementation dependenciesList.reLinker
implementation dependenciesList.timber
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
debugImplementation dependenciesList.leakCanaryDebug
releaseImplementation dependenciesList.leakCanaryRelease
androidTestImplementation dependenciesList.supportAnnotations
androidTestImplementation dependenciesList.testRunner
androidTestImplementation dependenciesList.testRules
androidTestImplementation dependenciesList.testEspressoCore
androidTestImplementation dependenciesList.testEspressoIntents
androidTestImplementation dependenciesList.testEspressoContrib
androidTestImplementation dependenciesList.testUiAutomator
}
apply from: “
r
o
o
t
D
i
r
/
g
r
a
d
l
e
/
g
r
a
d
l
e
−
m
a
k
e
.
g
r
a
d
l
e
"
a
p
p
l
y
f
r
o
m
:
"
{rootDir}/gradle/gradle-make.gradle" apply from: "
rootDir/gradle/gradle−make.gradle"applyfrom:"{rootDir}/gradle/gradle-config.gradle”
apply from: “
r
o
o
t
D
i
r
/
g
r
a
d
l
e
/
g
r
a
d
l
e
−
c
h
e
c
k
s
t
y
l
e
.
g
r
a
d
l
e
"
a
p
p
l
y
f
r
o
m
:
"
{rootDir}/gradle/gradle-checkstyle.gradle" apply from: "
rootDir/gradle/gradle−checkstyle.gradle"applyfrom:"{rootDir}/gradle/gradle-lint.gradle”
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
`
-
还是有问题呀,开始着急了,静下心看看这个报错
-
什么情况居然回到原点了,在看看报错
-
这个问题啊,跟as配置一样就行,我本地的是4.6,把下面这句话替换了就行
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
还有项目根目录的gradle替换成classpath 'com.android.tools.build:gradle:3.2.0'
-
点完小锤子还有错Message
-
跟着错误去错误的地方就好报的42行,其实不是这个问题,主要问题是MapboxGLAndroidSDK应该是一个lib,修改gradle中的第一行
apply plugin: 'com.android.library'
-
修改后点下小锤子看是否编译通过,不行,在关闭项目,再开,基本就好了最好看到项目的lib,java,app的图标变成这样
-
恭喜项目编译通过,最后看运行到手机上的效果,居然还有点问题
-
缺少so文件,嗯,这个嘛,不难,我们可以依赖一个远程的MapBoxSDK然后下载完后,在project最下面的External Libraries下面找到MapBoxSDk
-
鼠标箭头放classes上,右键点Show in Explorer进到了jars文件夹,然后点到上一级文件夹可以看到jni,jni里面就是我们需要的so文件,全部复制到MapboxGLAndroidSDK
-
build下项目,对了记得去Mapbox申请token,运行后的效果是这样