alibaba / arouter Goto Github PK
View Code? Open in Web Editor NEW💪 A framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
License: Apache License 2.0
💪 A framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
License: Apache License 2.0
使用navigation(Activity mContext, int requestCode),如果不设置flag,还没显示目标UI就回调onActivityResult(),目标UI 调用setResult(RESULT_OK, data)也不起作用。
clone了Arouter的源码,编辑了demo中的代码, 在app的activity中添加Autowired标记的字段有效,但是在module的activity中添加Autowired标记的字段不起作用,也不会自动生成xxxActivity$$Arouter$$Autowired文件
com.alibaba.android.arouter.compiler.utils.Consts.WARNING_TIPS="DO NOT EDIT THIE FILE..."
是不是有个单词手快打错了→_→
PS:项目666👍👍👍
1.配置一切正常。
2.我目前用了ARouter 暴露服务的功能
3.我的项目进行分包。modelA 依赖于lib.framework.在lib.framework中有服务暴露了,就是继承了IProvider,然后在modelA中我也新建了服务(继承了IProvider)
.然后在编译的时候提示:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Error:java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/alibaba/android/arouter/routes/ARouter$$Group$$service;
Error:com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/alibaba/android/arouter/routes/ARouter$$Group$$service;
Error:com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/alibaba/android/arouter/routes/ARouter$$Group$$service;
Error:java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/alibaba/android/arouter/routes/ARouter$$Group$$service;
Error:com.android.dex.DexException: Multiple dex files define Lcom/alibaba/android/arouter/routes/ARouter$$Group$$service;
当我点击跳的时候会有下面的log
W/ARouter::: ARouter::No postcard![ ]
W/ARouter::: ARouter::No postcard![ ]
D/ARouter::: The group [login] starts loading, trigger by [/login/LoginIndexActivity][ ]
D/ARouter::: The group [login] has already been loaded, trigger by [/login/LoginIndexActivity][ ]
I/: 这里是ARouter的跳转回调---onFound
I/ARouter::: Thread production, name is [ARouter task pool No.1, thread No.2][ ]<-----------这个是啥
03-08 15:44:06.276 17311-17311/me.ifitting.app.debug W/ARouter::: ARouter::No postcard![ThreadId=1 & ThreadName=main & FileName=_ARouter.java & ClassName=com.alibaba.android.arouter.launcher._ARouter & MethodName=navigation & LineNumber=252 ]
03-08 15:44:06.276 17311-17311/me.ifitting.app.debug W/ARouter::: ARouter::No postcard![ThreadId=1 & ThreadName=main & FileName=_ARouter.java & ClassName=com.alibaba.android.arouter.launcher._ARouter & MethodName=navigation & LineNumber=252 ]
是否有ios 的版本?
如题,关闭了InstantRun程序能正常启动,开启了InstantRun就启动不了.
但是我看你们的介绍说是能使用InstantRun。
我用的是模拟器7.1的。
集成到自己的项目中,修改了包路径,也在Const中修改。annotationProcessor等也引入了,apt:1.8也引入了。可以怎么编译运行,虽然不报错。但是也不在build中产生类文件。
如题,,,还有setData
我在看代码的时候看到下面这段
public static void initInterceptors() {
executor.execute(new Runnable() {
@Override
public void run() {
if (null != interceptorsIndex && interceptorsIndex.size() > 0) {
for (Map.Entry<Integer, Class<? extends IInterceptor>> entry : interceptorsIndex.entrySet()) {
Class<? extends IInterceptor> interceptorClass = entry.getValue();
try {
IInterceptor iInterceptor = interceptorClass.getConstructor().newInstance();
iInterceptor.init(mContext);
interceptors.add(iInterceptor);
} catch (Exception ex) {
throw new HandlerException(TAG + "ARouter init interceptor error! name = [" + interceptorClass.getName() + "], reason = [" + ex.getMessage() + "]");
}
}
interceptorHasInit = true;
logger.info(TAG, "ARouter interceptors init over.");
synchronized (interceptorInitLock) {
interceptorInitLock.notifyAll();
}
}
}
});
}
发现好像不是线程安全的?
1.会添加fragment支持吗
2.api能否获取到映射列表,方便团队使用
用你的Sample运行时,init后,加载了/data/apk/com.alibaba.xx.xx.xx/base.apk,找不到任何包含com.alibaba.android.arouter.routes包名的类,导致跳转时找不到模块
建议把res里ic_launcher.png去掉,与其他库或者工程文件冲突
1.序列化可以采用json序列化的形式,这样就能解决基本类型传输的问题.
2.至于fragment支持是因为为了复用有些fragment需要单独的去展示,Router这里指定一个容器activity,bundle原生不动的传递给fragment是可以的,参数自动注入这个功能非常好.
建议把res里ic_launcher.png去掉,与其他库或者工程文件冲突
可以不依赖json库吗?项目里已经有其他json库了,方法数即将超限。强迫症很难受。。。
public class PathReplaceServiceImpl implements DegradeService {
接口是不是实现错了?应该是实现PathReplaceService接口吧
public class PathReplaceServiceImpl implements PathReplaceService {
1.Fragment 中 开启Activity带requestCode ,开启的Activity关闭后,不会回调Fragment中的onActivityResult.
只会调用Fragment 所在Activity的onActivityResult.
2.用系统自带的开启Activity方式是Activity和Fragment中的onActivityResult都会执行.
3.现在需求在Fragment 中开启Activity然后在Activity关闭后回调fragment中的方法执行相应功能就没法做了.
4.是否会在近期版本修复这个问题?或者有什么其他的解决方法?
在app的layout文件加下添加与module同名的布局文件,使用Arouter跳转到module相应布局的Activity后加载的布局为app的layout下的布局而不是module下的布局。
问下 这个 支持 Fragment的路由跳转嘛
不同的module下注册相同的group名称,某一个group下的跳转全部失效,
// 转场动画(API16+)
ActivityOptionsCompat compat = ActivityOptionsCompat.makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);
使用文档中提供的运行没问题。
String transitionName = getString(R.string.transition_shared_elements);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, view, transitionName);
但是使用共享元素进行跳转时发现页面无法正常显示(页面应该已经跳转了,但是页面元素都没显示出来)。
ARouter来跳转Module2中的Activity第一次启动比较慢,之后就好多了,比原生的启动方式要慢,启动速度受到了影响。
帮忙看下。log显示 init成功 然后跳转不过去,
There is no route match the path [player], in group [main][ ]
W/ARouter::: ARouter::No postcard![ ]
我的build.gradle是:
compile 'com.alibaba:arouter-api:1.0.3'
annotationProcessor 'com.alibaba:arouter-compiler:1.0.3'
出错:
Error:Failed to resolve: annotationProcessor
==================================================
备注:
我把build.gradle中的1.0.3改成1.0.2仍失败, 同样的错误
但改为1.0.1就build成功了
请问是不是高版本的没有上传到仓库里?
用的最新版:
def aRouterApiVersion = "1.2.0"
def aRouterCompilerVersion = "1.1.0"
问题:调试的时候可以跳转,但是release的发布版无法跳转,代码都一样,求解。
项目里有2个module,一个app,一个common.
我把app module里的Application 当作一个服务接口的实现类来提供给common module注入
但是注入的一直为空.我也调用了Arouter的init. 在需要注入的地方也调用了 ARouter.getInstance().inject(this);
注解也检查了很多遍都没有问题.
不知道为何一直注入不了?是不是这种方式使用不支持?
Error:Execution failed for task ':app:processAutoupdateDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9-43
is also present at [com.alibaba:arouter-api:1.0.3] AndroidManifest.xml:14:18-54 value=(@drawable/ic_launcher).
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:5:5-22:19 to override.
开发大大你好,最近开始使用Arouter
出现问题的项目可以直接看源码的,因为这是一个开源项目:
他们分别是:
目标activity:PhotoMultiBrowserActiviry
调用的adapter:PhotoSelectAdapter line:203
根据文档,我已经写好了注解,没有主动分组,相关dependence也有了,GroupIndex =1,但还是没法跳转
相关截图如下(国内图床,因为怕无法显示出图片,所以把连接也一同附上):
Error:Unknown host 'mirrors.taobao.net'. You may need to adjust the proxy settings in Gradle.
项目编译出现这个问题 请问如何解决
java.lang.RuntimeException: Arouter::Compiler >>> No module name
我接入了最新版的Arouter-sdk,然后也接入了freeline,我的android-sdk是23,gradle是2.2.3,我发现如果用android studio原生的run运行的话100%会抛出上面异常,用freeline就不会,不知道是谁的问题。。。
你好。
DegradeService字面意思不是太明白,我是理解为类似全局onLost
捕获。
我想能不能给DegradeService做单独处理,类似Interceptor一样,现在我这样去定义一个DegradeService
@Route(path = "/xxx/123")
public class GlobalDegradeService implements DegradeService {
@Override
public void init(Context context) {
System.out.println("全局降级处理初始化");
}
@Override
public void onLost(Context context, Postcard postcard) {
System.out.println("全局降级处理");
}
public void customCall() {
System.out.println("我是自定义调用");
}
}
如果我跳转的path和GlobalDegradeService中定义的path,如果刚好一样的话,它就变成去获取一个Service,我想这样可能会让人感到困惑。如果它的定义是全局onLost
捕获,那我觉得单独处理会合理点。
@Autowired
String id;
@Autowired
String openId;
ARouter.getInstance().build("/mdressstyle/DressStyleDetailActivity")
.withString("id", dressStyleInfoList.getRows().get(position).getId())
.withString("openId", AppData.USER_INFO.getStaff().getOpenId())
.navigation();
but id and openId 没有数据
您好,我有个问题想请教下。
比如:从Activity A想要跳转到Activity B,但是B需要登录,于是我在Interceptor中拦截这个跳转事件,修改Postcard的目的地为LoginActivity,登录结束之后会回到Activity A,如何才能让登录结束后,直接跳转到该事件原先想要跳转的位置呢?
非常感谢。
希望能够说明好这几个依赖如何引用,特别是annotation这个依赖是否需要引入
如题,当app和test-module-1中定义了同一个 group的activity时,会导致生成类的名称相同而引起冲突。
Aroute example运行log如下:
01-13 15:25:06.490 30616-30616/com.alibaba.android.arouter.demo I/ARouter::: ARouter start attachBaseContext
01-13 15:25:06.497 30616-30616/com.alibaba.android.arouter.demo I/ARouter::: ARouter hook instrumentation success!
01-13 15:25:06.527 30616-30616/com.alibaba.android.arouter.demo I/galaxy: VM with name 'Android' has multidex support
01-13 15:25:06.529 30616-30616/com.alibaba.android.arouter.demo D/galaxy: Filter 0 classes by packageName <com.alibaba.android.arouter.routes>
01-13 15:25:06.532 30616-30616/com.alibaba.android.arouter.demo D/ActivityThread: BIND_APPLICATION handled : 0 / AppBindData{appInfo=ApplicationInfo{32762597 com.alibaba.android.arouter.demo}}
01-13 15:25:06.533 30616-30616/com.alibaba.android.arouter.demo V/ActivityThread: Handling launch of ActivityRecord{258c3384 token=android.os.BinderProxy@32e29fa2 {com.alibaba.android.arouter.demo/com.alibaba.android.arouter.demo.MainActivity}}
按照readme里的集成方法集成到我自己的app中也是无法跳转,There's no routematched!
能简单概述下不同module间原理吗?跟了很久源码没看懂,后期能添加实现原理的文档吗?
顺便问下 _ARouter的类的_navigation方法中的intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);这个标记位有什么作用?实际好像没有新建任务栈
三星真机:跑demo
url跳转跳转失败,依旧停留在webview界面。
界面显示 找不到网页!!!net::ERR_UNKNOWN_URL_SCHEME
日志:
03-15 16:14:46.314 1968-1968/com.alibaba.android.arouter.demo W/BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 1968
03-15 16:14:46.334 1968-1968/com.alibaba.android.arouter.demo W/BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 1968
03-15 16:14:46.344 1968-1968/com.alibaba.android.arouter.demo I/chromium: [INFO:CONSOLE(0)] "Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (0)
Gradle Version: Gradle 3.3
Gradle Plugin Version: gradle:2.3.0-beta2
我按照readme和demo的方式配置了gradle,工程里之前也配置了Dagger2,用的annotationProcessor,
之前都是正常的,使用了ARouter之后,就编译不过了。gradle console给了下面的错误,不知道是什么原因导致了Dagger2没有编译成功。
注: ARouter::Compiler The user has configuration the module name, it was [app]
注: ARouter::Compiler >>> InterceptorProcessor init. <<<
警告: No SupportedSourceVersion annotation found on com.alibaba.android.arouter.compiler.processor.InterceptorProcessor, returning RELEASE_6.
警告: 来自注释处理程序 'com.alibaba.android.arouter.compiler.processor.InterceptorProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.8'
注: ARouter::Compiler The user has configuration the module name, it was [app]
注: ARouter::Compiler >>> RouteProcessor init. <<<
/Users/admin/Desktop/Ukee/app/src/main/java/com/yujie/ukee/App.java:10: 错误: 找不到符号
import com.yujie.ukee.dagger.injection.DaggerAppComponent;
^
符号: 类 DaggerAppComponent
位置: 程序包 com.yujie.ukee.dagger.injection
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.