Code Monkey home page Code Monkey logo

yangchong211 / ycapptool Goto Github PK

View Code? Open in Web Editor NEW
3.2K 81.0 743.0 189.24 MB

组件化综合案例,组件分层为:基础公共组件,功能组件,业务组件,主工程。每一层组件的建设,很详细的工程案例,很全面的一个组件化实践案例。一个超级综合案例!

Java 86.12% Kotlin 3.75% CSS 0.21% HTML 0.28% JavaScript 1.34% AIDL 0.01% CMake 0.01% C++ 0.04% C 0.01% Ruby 0.03% Swift 0.01% Objective-C 0.01% Dart 8.18%

ycapptool's People

Contributors

yangchong211 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ycapptool's Issues

关于Presenter问题

目前查看代码,BaseActivityBaseFragment 中发现全局变量 mPresenter 一直为NULL,子类中并没有进行实例化

Glide版本不一致问题

应用:api 'com.github.bumptech.glide:glide:4.7.1'
与全局的glideSdkVersion : "4.9.0",
这两个版本会不兼容,会导致编译时一些类或者方法找不到的问题

依赖哪里冲突了?

Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: com.yc.statusbar.BuildConfig
at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64)
at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25)
at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24)
at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:124)
at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:123)
at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86)
at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:40)
at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:110)
at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)

build问题怎么解决

Error:A problem occurred configuring project ':app'.

Could not resolve all dependencies for configuration ':app:_debugApk'.
Could not determine artifacts for io.realm:realm-android-library:3.3.2
> Could not get resource 'https://jcenter.bintray.com/io/realm/realm-android-library/3.3.2/realm-android-library-3.3.2.aar'.
> Could not HEAD 'https://jcenter.bintray.com/io/realm/realm-android-library/3.3.2/realm-android-library-3.3.2.aar'.
> Software caused connection abort: recv failed

关于解决【4.6 存在待解决问题】的建议

@yangchong211 你好,我是开源库CC的作者,也是组件化技术的爱好者,今天(19.02.21)在掘金上从你的文章ARouter路由解析中进入到你的github主页,从而发现了这个项目,在阅读README的过程中看到4.6 存在待解决问题提出的问题,正好可以提供点建议,所以冒昧前来交流一下:

第一个建议是:开始使用arouter-register插件

由于本项目的组件化引擎是ARouter,从1.3.1版本开始使用了我PR的自动注册插件arouter-register替代dex扫描来完成路由表的跨module注册以提高初始化性能并解决apk加固的兼容性问题。不过貌似本项目目前并未使用arouter-reigister插件

第二个建议是:用AutoRegister插件代替arouter-register插件来解决问题

arouter-register插件是在AutoRegister插件的基础上ARouter定制的简化版本,只完成了路由表相关的3个接口实现类的自动注册,其好处是不需要用户手动配置扫描规则
AutoRegister插件是一个与具体业务无关的功能性框架,根据配置的规则,使用ASM来扫描字节码并生成注册代码。
所以,我们可以为AutoRegister插件配置ARouter的扫描需求,并额外通过增加配置来完成【4.6 存在待解决问题】中的需求,具体配置方法见AutoRegister文档

也可以参考这篇文章来配置,还需要仿照ARouter里LogisticsCenter的写法,在MyApplication中提供2个生成自动注册代码所需要的方法

以上,即可实现【4.6 存在待解决问题】中的需求

很高兴在你的文章里关于跨进程解决思路相关描述中提到了CC,CC在2.0版本之前确实使用的是BroadcastReceiver + Service + LocalSocket的方案来实现跨app组件调用。

2018年9月份CC进入了2.0时代,重构了跨进程通信机制和自动注册插件,新版本框架底层使用了ContentProvider + AIDL来实现跨进程(包括App内部可跨App)的组件调用

欢迎前来围观: https://github.com/luckybilly/CC

另外,由于CC是基于组件调用而非路由跳转来实现组件之间通信的,不需要繁琐的onActivityResult,也就能避免README中4.7 组件化中Fragment通信难点这个章节中提到的Fragment回调问题

以上!

导入项目报错

AGPBI: {"kind":"error","text":"No resource identifier found for attribute \u0027appComponentFactory\u0027 in package \u0027android\u0027","sources":[{"file":"\\?\F:\MyProject\Open\LifeHelper\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":37}}],"original":"","tool":"AAPT"}

编译报错

Task :app:processDebugResources FAILED
AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"/Users/gs/gs/code/zujianhua/LifeHelper/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml","position":{"startLine":26}}],"original":"/Users/gs/gs/code/zujianhua/LifeHelper/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml:27: AAPT: error: unexpected element found in .\n ","tool":"AAPT"}

编译遇到问题

  • What went wrong:
    A problem occurred evaluating project ':library'.

Could not get unknown property 'rootproject' for object of type com.android.build.gradle.LibraryExtension.

奔溃

Caused by: io.realm.exceptions.RealmException: CacheHomeNews is not part of the schema for this Realm
at io.realm.internal.modules.CompositeMediator.getMediator(CompositeMediator.java:181)
at io.realm.internal.modules.CompositeMediator.getSimpleClassNameImpl(CompositeMediator.java:99)
at io.realm.internal.RealmProxyMediator.getSimpleClassName(RealmProxyMediator.java:72)
at io.realm.RealmSchema.getTable(RealmSchema.java:177)
at io.realm.RealmSchema.getSchemaForClass(RealmSchema.java:200)
at io.realm.RealmQuery.(RealmQuery.java:154)
at io.realm.RealmQuery.createQuery(RealmQuery.java:93)
at io.realm.Realm.where(Realm.java:1431)
at com.ns.yc.lifehelper.ui.guide.presenter.GuidePresenter.cacheHomeNews(GuidePresenter.java:214)
at com.ns.yc.lifehelper.ui.guide.presenter.GuidePresenter.cacheHomeNewsData(GuidePresenter.java:114)
at com.ns.yc.lifehelper.ui.guide.view.activity.GuideActivity.initData(GuideActivity.java:104)
at com.ycbjie.library.base.mvp.BaseActivity.onCreate(BaseActivity.java:46)
at android.app.Activity.performCreate(Activity.java:6807)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2753)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2861) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6321) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:939) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:829) 

功能还没有完全开发完全

您好,我发现你项目很多功能,还没完善好的,不知道会不会继续完善,实现那些没开发好的功能,期待下一个版本学习。

unable to upload to android studio emulator on MAC

Firstly,
it indicates like:
“Device supports x86, but APK only supports armeabi-v7a”
So, according to Stackoverflow question suggested, I comment out

  ndk {  abiFilters "armeabi", "armeabi-v7a" //, "x86", "mips"   }

The app has been uploaded to emulator but crashed.

编译出错

release\dataBindingGenBaseClassesRelease\out\com\yc\todoappmvvm\databinding\TaskItemBinding.java:67: 错误: 找不到符

public static TaskItemBinding bind(@nonnull View view, @nullable DataBindingComponent component) {
^
符号: 类 DataBindingComponent
位置: 类 TaskItemBinding
错误: 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: android.databinding.annotationprocess
or.ProcessDataBinding Unable to get public no-arg constructor时抛出异常错误
28 个错误

There is no route match the path [/other/xxx], in group [other][ ]

您好,本人刚入门组件化,可能也不太懂哈,项目跑起来后点击妹子画廊、抽奖相关的就会报这个错,然后发现是other模块没有生成相应的IRouteGroup文件。从ARouter的Issues找了下问题,大概是没有配置好ARouter,看了一下other的build.gradle的ARouter配置是kotlin的,把这行 annotationProcessor rootProject.ext.dependencies["router-compiler"] 给注掉了,改成 kapt 'com.alibaba:arouter-compiler:1.2.2' 就好了,下载的apk没问题,不知道是我哪里配置的不对。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.