![](https://img.haomeiwen.com/i18813666/21e46106a54b6c6f.png)
一、使用
1.1 导包
导包现在分java和kotlin, java的导包方法如下,在根moduel的build.gradle添加如下内容:
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
}
dependencies {
// 替换成最新版本, 需要注意的是api,最新版本看文章开头
// 要与compiler匹配使用,均使用最新版可以保证兼容
compile 'com.alibaba:arouter-api:x.x.x'
annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
...
如果java使用的是apt,导入方法则是如下:
apply plugin: 'com.neenbedankt.android-apt'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
apt {
arguments {
moduleName project.getName();
}
}
dependencies {
//这里填写最新的版本看文章开始
compile 'com.alibaba:arouter-api:x.x.x'
apt 'com.alibaba:arouter-compiler:x.x.x'
...
kotlin的导包方法如下,在根moduel的build.gradle添加如下内容:
apply plugin: 'kotlin-kapt'
kapt {
arguments {
arg("moduleName", project.getName())
}
}
dependencies {
//这里填写最新的版本,看文章开始
compile 'com.alibaba:arouter-api:x.x.x'
kapt 'com.alibaba:arouter-compiler:x.x.x'
...
1.2初始化
class App : Application() {
val isDebugArout: Boolean = true
override fun onCreate() {
super.onCreate()
sContext = this
//如果在debug模式下
if (isDebugArout){
// 打印日志,默认关闭
ARouter.openLog()
// 开启调试模式,默认关闭(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
ARouter.openDebug()
}
//初始化
ARouter.init(this)
}
//声明context
companion object {
lateinit var sContext: Context
}
1.3普通Activity跳转
举例来说 AActivity跳转BActivity
AActivity
class AActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.app_activity_main)
val textView = findViewById(R.id.app_but) as TextView
textView!!.setOnClickListener {
ARouter.getInstance()
.build("/path/CmMainActivity")
.navigation(this)
}
}
}
BActivity
@Route(path = "/path/CmMainActivity")
class CmMainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.ch_activity_main)
}
1.4 普通Activity带值跳转
AActivity
调用with对应的类型即可,
class AActivity : AppCompatActivity() {
// var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView = findViewById(R.id.app_but) as TextView
textView!!.setOnClickListener {
ARouter.getInstance().build("/path/CmMainActivity")
.withLong("longkey", 555555)
.withString("stringKey", "55555")
.navigation(this)
}
}
BActivity
在接收的activity解析的时候,获取到extras,get对应的类型即可
@Route(path = "/path/CmMainActivity")
class CmMainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.ch_activity_main)
val exte =intent.extras
println(exte.getLong("longkey"))
println(exte.getString("stringKey"))
}
}
二、出现的错误
2.1
问题
There’s no route matchedPath =V/app/NetmainactivityGroup=app)
解决
1.build,gradle依赖是否添加成功
2.application 中是否初始化
3.跳转的类名字是否相同
![](https://img.haomeiwen.com/i18813666/339ad22a9c6a92cf.png)
2.2
问题
运行apk的时候同时出现了两个APK并且删掉一个另一个也消失掉
解决
去mainifests中查找是否其他模块中的也存在,存在的话删掉.
![](https://img.haomeiwen.com/i18813666/a1ca44e053fc1024.png)
最后
漫漫开发之路,我们只是其中的一小部分……只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!
今年年初我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,资料免费领取方式:加群:797404811,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。
重要的事说三遍,转发+转发+转发,让更多需要的朋友们都可以看到并且领到!
网友评论