最近想要做一个展示图表的app,使用gradle构建时报错2天没有解决,最终在耐心钻研下终于成功运行,先将问题与解决办法总结如下
第一步 下载库文件.zip
MPAndroidChart:v3.1.0下载地址,https://github.com/PhilJay/MPAndroidChart
下载后解压获得MPAndroidChart-master文件夹
在file->new->Import Module->Source directory:C:\Users\ASUS\Desktop\MPAndroidChart-master
第二步 添加依赖后需要修改配置
// 项目级 build.gradle
plugins {
// alias(libs.plugins.android.application) apply false // 使用版本目录(Version Catalogs)管理插件
id 'com.android.application' version '7.4.2' apply false
}
// 主应用模块级 build.gradle
plugins {
// alias(libs.plugins.android.application) //默认注释掉
id 'com.android.application' version '7.4.2' //修改gradle版本为 7.5与7.4.2兼容
}
android {
namespace 'com.example.ruhe_im_moudeo'
compileSdk 34
defaultConfig {
applicationId "com.example.ruhe_im_moudeo"
minSdk 26
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
implementation project(':MPChartLib') //添加库文件
implementation project(':MPChartExample')//添加模块文件
}
MPChartExample/build.gradle
//MPChartExample/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.xxmassdeveloper.mpchartexample"
minSdkVersion 26 //最小版本与主模块同步
targetSdkVersion 34 //目标版本与主模块同步
versionCode 57
versionName '3.1.0'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation "androidx.appcompat:appcompat:1.0.2"
implementation 'com.google.android.material:material:1.0.0'
implementation project(':MPChartLib')
}
MPChartLib/build.gradle
apply plugin: 'com.android.library'
//apply plugin: 'com.github.dcendents.android-maven'//这里会报错,注释掉
group='com.github.philjay'
android {
namespace 'com.github.philjay' //新版本需要添加命名
compileSdkVersion 34
buildToolsVersion '28.0.3'
defaultConfig {
// applicationId "com.github.philjay"//作为库文件不需要id
minSdkVersion 26 //与主模块同步最小版本
targetSdkVersion 34 //与主模块同步目标版本
versionCode 3
versionName '3.1.0'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
testOptions {
unitTests.returnDefaultValues = true // this prevents "not mocked" error
}
}
dependencies {
implementation 'androidx.annotation:annotation:1.0.0'
testImplementation 'junit:junit:4.12'
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
archiveClassifier = 'sources' //改为archiveClassifier类
}
task javadoc(type: Javadoc) {
options.charSet = 'UTF-8'
failOnError false
source = android.sourceSets.main.java.sourceFiles
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc' //改为archiveClassifier类
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
修改项目的settings.gradle
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
// google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) // 更改优先使用 settings 中的仓库
repositories {
google()
mavenCentral()
}
}
rootProject.name = "ruhe_im_moudeo"
include ':app'
include ':MPChartLib' //添加
include ':MPChartExample' //添加
修改MPChartExample/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<!--添加xmlns:tools="http://schemas.android.com/tools" -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxmassdeveloper.mpchartexample">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--添加tools:replace="android:icon,android:theme移除重复声明-->
<application
android:allowBackup="false"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
tools:replace="android:icon,android:theme"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!--添加android:exported="true"
tools:node="merge" 合并重复属性-->
<activity
android:name="com.xxmassdeveloper.mpchartexample.notimportant.MainActivity"
android:label="@string/app_name"
android:exported="true"
tools:node="merge">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="LineChartActivity1" />
<activity android:name="LineChartActivity2" />
<activity android:name="LineChartTime" />
<activity android:name="BarChartActivity" />
<activity android:name="HorizontalBarChartActivity" />
<activity android:name="HorizontalBarNegativeChartActivity" />
<activity android:name="PieChartActivity" />
<activity android:name="PiePolylineChartActivity" />
<activity android:name="MultiLineChartActivity" />
<activity android:name="BarChartActivityMultiDataset" />
<activity android:name="DrawChartActivity" />
<activity android:name="ScatterChartActivity" />
<activity android:name="BubbleChartActivity" />
<activity android:name=".fragments.SimpleChartDemo" />
<activity android:name="ListViewBarChartActivity" />
<activity android:name="ListViewMultiChartActivity" />
<activity android:name="StackedBarActivity" />
<activity android:name="AnotherBarActivity" />
<activity android:name="InvertedLineChartActivity" />
<activity android:name="CandleStickChartActivity" />
<activity android:name="CubicLineChartActivity" />
<activity android:name="RadarChartActivity" />
<activity android:name="LineChartActivityColored" />
<activity android:name="DynamicalAddingActivity" />
<activity android:name="RealtimeLineChartActivity" />
<activity android:name="CombinedChartActivity" />
<activity android:name="PerformanceLineChart" />
<activity android:name="BarChartActivitySinus" />
<activity android:name="ScrollViewActivity" />
<activity android:name="StackedBarActivityNegative" />
<activity android:name="BarChartPositiveNegative" />
<activity android:name="FilledLineActivity" />
<activity android:name="HalfPieChartActivity" />
</application>
</manifest>
file-> Invalidate Caches ->Invalidate and Restart 等待应用重启,等待重新构建
在activity_main.xml中添加测试
在MainActivity.java中添加引用测试有没有报错
整个过程使用腾讯元宝解答,一知半解