├── .gitignore ├── CommonTool ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── baiiu │ │ └── commontool │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── baiiu │ │ │ └── commontool │ │ │ ├── MainActivity.java │ │ │ ├── app │ │ │ ├── CommonApplication.java │ │ │ └── UIUtil.java │ │ │ ├── async │ │ │ └── TinyTaskManager.java │ │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ ├── BaseBaseAdapter.java │ │ │ ├── BaseFragment.java │ │ │ ├── BaseListAdapter.java │ │ │ ├── BasePagerAdapter.java │ │ │ ├── BaseViewHolder.java │ │ │ └── FooterViewHolder.java │ │ │ ├── mvp │ │ │ ├── BasePresenter.java │ │ │ ├── MVPPresenter.java │ │ │ ├── MvpView.java │ │ │ └── ToastInfoView.java │ │ │ ├── net │ │ │ ├── ApiContants.java │ │ │ ├── ApiFactory.java │ │ │ ├── api │ │ │ │ ├── AnotherAPI.java │ │ │ │ └── GitHubAPI.java │ │ │ ├── retrofit │ │ │ │ ├── HttpHelper.java │ │ │ │ ├── OKHttpFactory.java │ │ │ │ ├── RetrofitClient.java │ │ │ │ └── interceptor │ │ │ │ │ ├── AllCachedInterceptor.java │ │ │ │ │ ├── OnOffLineCachedInterceptor.java │ │ │ │ │ └── UserAgentInterceptor.java │ │ │ └── util │ │ │ │ ├── HttpNetUtil.java │ │ │ │ └── NetWorkReceiver.java │ │ │ ├── util │ │ │ ├── AppConfigUtil.java │ │ │ ├── AppUtil.java │ │ │ ├── CommonUtil.java │ │ │ ├── Constant.java │ │ │ ├── DateFormatUtil.java │ │ │ ├── LUtils.java │ │ │ ├── ReadedListUtil.java │ │ │ ├── ScreenUtil.java │ │ │ ├── Version.java │ │ │ ├── io │ │ │ │ ├── FileUtil.java │ │ │ │ └── IOUtil.java │ │ │ └── store │ │ │ │ ├── ACache.java │ │ │ │ ├── PreferenceUtil.java │ │ │ │ └── StorageUtil.java │ │ │ └── view │ │ │ ├── LoadFrameLayout.java │ │ │ └── SwipeBackLayout.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── holder_footer.xml │ │ ├── layout_empty.xml │ │ ├── layout_error.xml │ │ └── layout_loading.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── baiiu │ └── commontool │ └── ExampleUnitTest.java ├── JavaLib ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── baiiu │ └── java │ ├── Base.java │ ├── Child.java │ ├── MyClass.java │ ├── MyClassVisitor.java │ ├── Parent.java │ ├── Test.java │ ├── TestLazy.kt │ └── testEnum │ ├── EnumTest.java │ └── Test.java ├── README.md ├── build.gradle ├── buildSystem ├── artifacts.gradle └── dependencies.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hook ├── README.md ├── hookapp │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── hookapp │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── app-debug.apk │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── hookapp │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApplication.java │ │ │ │ ├── SecondActivity.java │ │ │ │ ├── binderHook │ │ │ │ ├── BinderHook.java │ │ │ │ └── BinderHook2.java │ │ │ │ ├── loadedApkHook │ │ │ │ ├── CreateClassLoaderHook.java │ │ │ │ ├── CustomClassLoader.java │ │ │ │ └── Util.java │ │ │ │ ├── msHook │ │ │ │ ├── AMSHook.java │ │ │ │ └── PMSHook.java │ │ │ │ ├── pathClassLoaderHook │ │ │ │ ├── PathClassLoaderHook.java │ │ │ │ └── ResourceHook.java │ │ │ │ ├── pathClassLoaderHook2 │ │ │ │ ├── PathClassLoaderHook2.java │ │ │ │ └── ResourceHook2.java │ │ │ │ ├── pathClassLoaderHook3 │ │ │ │ ├── PathClassLoaderHook3.java │ │ │ │ └── ResourceHook3.java │ │ │ │ ├── startActivityHook │ │ │ │ └── StartActivityHook.java │ │ │ │ └── startStubActivity │ │ │ │ ├── StubHook.java │ │ │ │ └── TargetActivity.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── activity_target.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── hookapp │ │ └── ExampleUnitTest.java └── testapk │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── baiiu │ │ └── testapk │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── baiiu │ │ │ └── testapk │ │ │ └── TestActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_test.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── baiiu │ └── testapk │ └── ExampleUnitTest.kt ├── jni ├── README.md ├── cmaketest │ ├── .gitignore │ ├── build.gradle │ ├── cmake.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── cmaketest │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ │ ├── CMakeLists.txt │ │ │ ├── boolean_test │ │ │ │ └── CMakeLists.txt │ │ │ ├── fibo.cpp │ │ │ ├── fibo.h │ │ │ ├── function_test │ │ │ │ └── CMakeLists.txt │ │ │ └── native-lib.cpp │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── cmaketest │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-night │ │ │ └── themes.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── cmaketest │ │ └── ExampleUnitTest.java ├── jnitest │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── jnitest │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ │ ├── CMakeLists.txt │ │ │ ├── base │ │ │ │ └── log.h │ │ │ ├── bitmap │ │ │ │ └── bitmap.cpp │ │ │ ├── dlopen │ │ │ │ └── testdlopen.cpp │ │ │ ├── dns │ │ │ │ └── testdns.cpp │ │ │ ├── dynamic │ │ │ │ └── dynamic-lib.cpp │ │ │ ├── epoll │ │ │ │ └── testepoll.cpp │ │ │ ├── exception │ │ │ │ └── exception.cpp │ │ │ ├── native-lib.cpp │ │ │ ├── people │ │ │ │ ├── People.cpp │ │ │ │ └── People.h │ │ │ ├── reference │ │ │ │ ├── PassReference.cpp │ │ │ │ └── reference.cpp │ │ │ ├── string │ │ │ │ └── StringTest.cpp │ │ │ ├── testSocket │ │ │ │ └── SocketTest.cpp │ │ │ ├── thread │ │ │ │ ├── threadCallback.cpp │ │ │ │ ├── threadCreate.cpp │ │ │ │ ├── threadMutil.cpp │ │ │ │ └── threadPrint12.cpp │ │ │ └── typeConvert │ │ │ │ └── TypeConvert.cpp │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── jnitest │ │ │ │ ├── MainActivity.java │ │ │ │ ├── SplashActivity.java │ │ │ │ ├── base │ │ │ │ └── BaseFragment.java │ │ │ │ ├── basic │ │ │ │ └── BasicFragment.java │ │ │ │ ├── bitmap │ │ │ │ └── BitmapFragment.java │ │ │ │ ├── dlopen │ │ │ │ └── DLOpenFragment.java │ │ │ │ ├── dns │ │ │ │ └── DNSFragment.java │ │ │ │ ├── dynamicLoad │ │ │ │ ├── DynamicFragment.java │ │ │ │ └── DynamicLoad.java │ │ │ │ ├── epoll │ │ │ │ └── EpollFragment.java │ │ │ │ ├── exception │ │ │ │ └── ExceptionFragment.java │ │ │ │ ├── reference │ │ │ │ ├── Animal.java │ │ │ │ ├── PassReferenceFragment.java │ │ │ │ └── ReferenceFragment.java │ │ │ │ ├── string │ │ │ │ └── StringTestFragment.java │ │ │ │ ├── testSocket │ │ │ │ └── TestSocketFragment.java │ │ │ │ ├── thread │ │ │ │ ├── ThreadCallbackFragment.java │ │ │ │ ├── ThreadCreateFragment.java │ │ │ │ └── ThreadMutexFragment.java │ │ │ │ └── typeConvert │ │ │ │ └── TypeConvertFragment.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ ├── fragment_basic.xml │ │ │ ├── fragment_bitmap.xml │ │ │ └── fragment_dynamic.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── jnitest │ │ └── ExampleUnitTest.java ├── mktest │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── mktest │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ └── hellowrold │ │ │ │ ├── Android.mk │ │ │ │ ├── hello.cpp │ │ │ │ └── world.cpp │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── mktest │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── mktest │ │ └── ExampleUnitTest.java └── nativeleak │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── baiiu │ │ └── nativeleak │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── native-lib.cpp │ │ ├── testLeak.cpp │ │ └── xhook │ │ │ ├── queue.h │ │ │ ├── tree.h │ │ │ ├── xh_core.c │ │ │ ├── xh_core.h │ │ │ ├── xh_elf.c │ │ │ ├── xh_elf.h │ │ │ ├── xh_errno.h │ │ │ ├── xh_jni.c │ │ │ ├── xh_log.c │ │ │ ├── xh_log.h │ │ │ ├── xh_util.c │ │ │ ├── xh_util.h │ │ │ ├── xh_version.c │ │ │ ├── xh_version.h │ │ │ ├── xhook.c │ │ │ └── xhook.h │ ├── java │ │ └── com │ │ │ └── baiiu │ │ │ └── nativeleak │ │ │ ├── MainActivity.java │ │ │ ├── MyApplication.java │ │ │ └── XHook.java │ ├── jniLibs │ │ ├── arm64-v8a │ │ │ └── libclang_rt.asan-aarch64-android.so │ │ ├── armeabi-v7a │ │ │ └── libclang_rt.asan-arm-android.so │ │ ├── x86 │ │ │ └── libclang_rt.asan-i686-android.so │ │ └── x86_64 │ │ │ └── libclang_rt.asan-x86_64-android.so │ ├── res │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── values-night │ │ │ └── themes.xml │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ └── resources │ │ └── lib │ │ ├── arm64-v8a │ │ └── wrap.sh │ │ ├── armeabi-v7a │ │ └── wrap.sh │ │ ├── x86 │ │ └── wrap.sh │ │ └── x86_64 │ │ └── wrap.sh │ └── test │ └── java │ └── com │ └── baiiu │ └── nativeleak │ └── ExampleUnitTest.java ├── lib_component ├── CrashWoodPecker │ ├── .gitignore │ ├── build.gradle │ ├── gradle-mvn-push.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── me │ │ │ └── drakeet │ │ │ └── library │ │ │ ├── CrashWoodpecker.java │ │ │ ├── FileUtils.java │ │ │ ├── StringStyleUtils.java │ │ │ ├── model │ │ │ ├── CrashCause.java │ │ │ └── CrashLogs.java │ │ │ └── ui │ │ │ ├── CatchActivity.java │ │ │ └── CrashListAdapter.java │ │ └── res │ │ ├── drawable-xhdpi │ │ └── ic_share_white_24dp.png │ │ ├── drawable │ │ └── bg_item_crash.xml │ │ ├── layout │ │ ├── activity_catch.xml │ │ └── item_trace.xml │ │ ├── menu │ │ └── menu_catch.xml │ │ ├── mipmap-xhdpi │ │ └── ic_woodpecker.png │ │ ├── values-v14 │ │ └── styles.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml ├── CrashWoodPeckerRelease │ ├── .gitignore │ ├── build.gradle │ ├── gradle-mvn-push.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── me │ │ └── drakeet │ │ └── library │ │ └── CrashWoodpecker.java ├── LogUtil │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── library │ │ ├── LogUtil.java │ │ ├── LogUtilHelper.java │ │ ├── klog │ │ ├── BaseLog.java │ │ ├── FileLog.java │ │ ├── JsonLog.java │ │ └── XmlLog.java │ │ └── okHttpLog │ │ ├── HttpLoggingInterceptorM.java │ │ └── LogInterceptor.java └── LogUtilRelease │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── baiiu │ │ └── library │ │ ├── LogUtil.java │ │ └── okHttpLog │ │ ├── HttpLoggingInterceptorM.java │ │ └── LogInterceptor.java │ └── res │ └── values │ └── strings.xml ├── majorFrame ├── Dagger2Study │ ├── README.md │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── dagger2learn │ │ │ └── ApplicationTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── dagger2learn │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApplication.java │ │ │ │ ├── bean │ │ │ │ ├── OneApple.java │ │ │ │ └── OnePerson.java │ │ │ │ ├── di │ │ │ │ ├── component │ │ │ │ │ └── AppComponent.java │ │ │ │ ├── module │ │ │ │ │ ├── ActivityModule.java │ │ │ │ │ └── ApplicationModule.java │ │ │ │ ├── qualifier │ │ │ │ │ └── FruitType.java │ │ │ │ └── scope │ │ │ │ │ ├── PerActivity.java │ │ │ │ │ ├── PerApp.java │ │ │ │ │ └── PerFragment.java │ │ │ │ ├── doubleDependenciesSample │ │ │ │ ├── DoubleDependenciesComponent.java │ │ │ │ ├── DoubleDependenciesFragment.java │ │ │ │ ├── OneModule.java │ │ │ │ └── bean │ │ │ │ │ ├── One.java │ │ │ │ │ ├── Three.java │ │ │ │ │ └── Two.java │ │ │ │ ├── littleSample │ │ │ │ ├── Fruit.java │ │ │ │ ├── FruitComponent.java │ │ │ │ ├── FruitFragment.java │ │ │ │ └── FruitModule.java │ │ │ │ ├── littleSingleSample │ │ │ │ ├── Apple.java │ │ │ │ ├── LittleSampleComponent.java │ │ │ │ └── LittleSingleSampleFragment.java │ │ │ │ ├── mvpSample │ │ │ │ ├── IView.java │ │ │ │ ├── MainComponent.java │ │ │ │ ├── MainFragment.java │ │ │ │ ├── MainFragmentComponent.java │ │ │ │ ├── MainFragmentModule.java │ │ │ │ ├── MainModule.java │ │ │ │ └── MainPresenter.java │ │ │ │ └── util │ │ │ │ └── LogUtil.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── fragment_main.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── dagger2learn │ │ └── ExampleUnitTest.java ├── LiteOrmStudy │ ├── 1.html │ ├── README.md │ ├── build.gradle │ ├── libs │ │ └── lite-orm-1.9.1.jar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── testing │ │ │ └── liteormlearn │ │ │ ├── ApplicationTest.java │ │ │ ├── TestClassType.java │ │ │ ├── TestCollection.java │ │ │ ├── TestGeneric.java │ │ │ ├── TestGetClass.java │ │ │ ├── TestInstance.java │ │ │ ├── TestNewInstance.java │ │ │ ├── TestNext.java │ │ │ ├── TestSpliter.java │ │ │ └── TestTry.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── testing │ │ │ │ └── liteormlearn │ │ │ │ ├── MyApplcation.java │ │ │ │ ├── learn │ │ │ │ └── TestActivity.java │ │ │ │ ├── model │ │ │ │ ├── Model.java │ │ │ │ ├── Person.java │ │ │ │ ├── TestModel.java │ │ │ │ ├── User.java │ │ │ │ ├── cascade │ │ │ │ │ ├── Book.java │ │ │ │ │ ├── Classes.java │ │ │ │ │ ├── School.java │ │ │ │ │ ├── Student.java │ │ │ │ │ └── Teacher.java │ │ │ │ ├── me │ │ │ │ │ └── ModelA.java │ │ │ │ └── single │ │ │ │ │ ├── Address.java │ │ │ │ │ ├── BaseModel.java │ │ │ │ │ ├── Boss.java │ │ │ │ │ ├── Company.java │ │ │ │ │ ├── Man.java │ │ │ │ │ ├── Person.java │ │ │ │ │ └── Wife.java │ │ │ │ ├── orm │ │ │ │ ├── ApiConstant.java │ │ │ │ └── UOrm.java │ │ │ │ ├── samples │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── CascadeTestActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ └── SingleTestActivity.java │ │ │ │ ├── test │ │ │ │ └── SqliteUtils.java │ │ │ │ └── util │ │ │ │ └── CommonUtil.java │ │ └── res │ │ │ ├── layout │ │ │ ├── act_list_btn.xml │ │ │ ├── act_main.xml │ │ │ └── activity_main.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── testing │ │ └── liteormlearn │ │ └── ExampleUnitTest.java ├── RxJava2Study │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── rxjava2study │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── rxjava2study │ │ │ │ ├── CreateFragment.java │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── rxjava2study │ │ └── ExampleUnitTest.java ├── RxJavaStudy │ ├── README.md │ ├── build.gradle │ ├── note.md │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── testing │ │ │ └── rxjavalearn │ │ │ └── ApplicationTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── testing │ │ │ │ └── rxjavalearn │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApplication.java │ │ │ │ ├── bean │ │ │ │ ├── Course.java │ │ │ │ ├── Repo.java │ │ │ │ ├── Student.java │ │ │ │ └── User.java │ │ │ │ ├── bestSample │ │ │ │ ├── CacheFragment.java │ │ │ │ ├── GankApi.java │ │ │ │ ├── GankBeautyResultToItemsMapper.java │ │ │ │ └── data │ │ │ │ │ ├── Data.java │ │ │ │ │ ├── Database.java │ │ │ │ │ ├── GankBeauty.java │ │ │ │ │ ├── GankBeautyResult.java │ │ │ │ │ └── Item.java │ │ │ │ ├── fragments │ │ │ │ ├── ConvertFragment.java │ │ │ │ ├── ErrorTestFragment.java │ │ │ │ ├── GitHubAPI.java │ │ │ │ ├── InitFirstLearnFragment.java │ │ │ │ ├── ResearchFragment.java │ │ │ │ ├── RetrofitRxFragment.java │ │ │ │ └── TestFragment.java │ │ │ │ ├── operators │ │ │ │ ├── AggregateOperatorsFragment.java │ │ │ │ ├── BaseFragment.java │ │ │ │ ├── CombiningOperatorsFragment.java │ │ │ │ ├── ConditionalBooleanOperatorsFragment.java │ │ │ │ ├── ConnectOperatorsFragment.java │ │ │ │ ├── CreateOperatorFragment.java │ │ │ │ ├── CustomOperatorsFragment.java │ │ │ │ ├── ErrorHandingFragment.java │ │ │ │ ├── FilterOperatorsFragment.java │ │ │ │ ├── SubjectFragment.java │ │ │ │ ├── TransformOperatorsFragment.java │ │ │ │ └── UtilityOperatorsFragment.java │ │ │ │ ├── rxEncapsulated │ │ │ │ ├── ApiResponse.java │ │ │ │ ├── ApiResponseException.java │ │ │ │ ├── CommonUtil.java │ │ │ │ ├── Funcs.java │ │ │ │ ├── RxUtil.java │ │ │ │ └── Transformers.java │ │ │ │ ├── transformer │ │ │ │ └── TransformerTestFragment.java │ │ │ │ └── util │ │ │ │ └── LogUtil.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── fragment_create.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── testing │ │ └── rxjavalearn │ │ └── ExampleUnitTest.java └── retrofitStudy │ ├── retrofit │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── pom.xml │ └── src │ │ └── retrofit2 │ │ ├── BuiltInConverters.java │ │ ├── Call.java │ │ ├── CallAdapter.java │ │ ├── Callback.java │ │ ├── Converter.java │ │ ├── DefaultCallAdapterFactory.java │ │ ├── ExecutorCallAdapterFactory.java │ │ ├── OkHttpCall.java │ │ ├── ParameterHandler.java │ │ ├── Platform.java │ │ ├── RequestBuilder.java │ │ ├── Response.java │ │ ├── Retrofit.java │ │ ├── ServiceMethod.java │ │ ├── Utils.java │ │ └── http │ │ ├── Body.java │ │ ├── DELETE.java │ │ ├── Field.java │ │ ├── FieldMap.java │ │ ├── FormUrlEncoded.java │ │ ├── GET.java │ │ ├── HEAD.java │ │ ├── HTTP.java │ │ ├── Header.java │ │ ├── HeaderMap.java │ │ ├── Headers.java │ │ ├── Multipart.java │ │ ├── OPTIONS.java │ │ ├── PATCH.java │ │ ├── POST.java │ │ ├── PUT.java │ │ ├── Part.java │ │ ├── PartMap.java │ │ ├── Path.java │ │ ├── Query.java │ │ ├── QueryMap.java │ │ ├── Streaming.java │ │ ├── Url.java │ │ └── package-info.java │ ├── retrofitDemo │ ├── README.md │ ├── build.gradle │ ├── note.txt │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── testing │ │ │ └── myapplication │ │ │ └── ApplicationTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── testing │ │ │ │ └── myapplication │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApplication.java │ │ │ │ ├── bean │ │ │ │ ├── Daily.java │ │ │ │ ├── GankIODay.java │ │ │ │ ├── GankIOHistory.java │ │ │ │ ├── Repo.java │ │ │ │ ├── Story.java │ │ │ │ └── User.java │ │ │ │ ├── fragments │ │ │ │ ├── ConverterTestFragment.java │ │ │ │ ├── ErrorTestFragment.java │ │ │ │ ├── NewsListFragment.java │ │ │ │ ├── OkHttpFragment.java │ │ │ │ └── RetrofitFragment.java │ │ │ │ ├── mClass │ │ │ │ ├── ApiResponse.java │ │ │ │ ├── NotResponseException.java │ │ │ │ ├── gsonConverter │ │ │ │ │ ├── GsonConverterFactory.java │ │ │ │ │ ├── GsonRequestBodyConverter.java │ │ │ │ │ └── GsonResponseBodyConverter.java │ │ │ │ └── stringConverter │ │ │ │ │ └── StringConverter.java │ │ │ │ ├── retrofit │ │ │ │ ├── AnotherAPI.java │ │ │ │ ├── ApiContants.java │ │ │ │ ├── ApiFactory.java │ │ │ │ ├── GitHubAPI.java │ │ │ │ └── http │ │ │ │ │ ├── HttpHelper.java │ │ │ │ │ ├── OKHttpFactory.java │ │ │ │ │ ├── RetrofitClient.java │ │ │ │ │ └── interceptor │ │ │ │ │ ├── AllCachedInterceptor.java │ │ │ │ │ ├── OnOffLineCachedInterceptor.java │ │ │ │ │ └── UserAgentInterceptor.java │ │ │ │ └── util │ │ │ │ ├── GsonUtil.java │ │ │ │ ├── HttpNetUtil.java │ │ │ │ └── NetWorkReceiver.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── fragment_list.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── testing │ │ └── myapplication │ │ └── ExampleUnitTest.java │ └── rxjava │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── pom.xml │ └── src │ └── retrofit2 │ └── adapter │ └── rxjava │ ├── CompletableHelper.java │ ├── HttpException.java │ ├── OperatorMapResponseToBodyOrError.java │ ├── Result.java │ ├── RxJavaCallAdapterFactory.java │ └── SingleHelper.java ├── plugin ├── README.md ├── gradleNote │ ├── .gitignore │ ├── README.md │ ├── assets │ │ └── sample.xml │ ├── books │ │ └── 深入理解Android之Gradle.pdf │ ├── gradleCode │ │ ├── projectA │ │ │ └── build.gradle │ │ ├── projectB │ │ │ ├── build.gradle │ │ │ └── test.gradle │ │ ├── settings.gradle │ │ └── test │ │ │ └── build.gradle │ └── groovyCode │ │ ├── advanceLearn.groovy │ │ ├── closureTest.groovy │ │ ├── ioLearn.groovy │ │ ├── test.groovy │ │ └── xmlParseLearn.groovy ├── logkotplugin │ ├── .gitignore │ ├── build.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── baiiu │ │ │ └── logkotplugin │ │ │ └── LogVisitor.java │ │ ├── kotlin │ │ └── com │ │ │ └── baiiu │ │ │ └── logkotplugin │ │ │ ├── LogPlugin.kt │ │ │ └── LogTransform.kt │ │ └── resources │ │ └── META-INF │ │ └── gradle-plugins │ │ └── com.baiiu.log.properties ├── pluginApplication │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── pluginapplication │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── SecondActivity.java │ │ │ │ └── TraceUtil.java │ │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── test1.gradle.kts │ ├── test2.gradle.kts │ ├── test3.gradle.kts │ └── test4.gradle.kts ├── testKotlinPlugin │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── kotlin │ │ └── com │ │ │ └── baiiu │ │ │ └── testplu │ │ │ └── PrintTaskHelloPlugin.kt │ │ └── resources │ │ └── META-INF │ │ └── gradle-plugins │ │ └── com.test.kothello.properties └── testplugin │ ├── .gitignore │ ├── build.gradle │ └── src │ └── main │ ├── groovy │ └── com │ │ └── baiiu │ │ └── testplugin │ │ └── HelloPlugin.groovy │ └── resources │ └── META-INF │ └── gradle-plugins │ └── com.test.hello.properties ├── settings.gradle ├── someApplications ├── MyApplication │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── myapplication │ │ │ └── ApplicationTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── page.css │ │ │ ├── page.html │ │ │ └── page.js │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── myapplication │ │ │ │ ├── CommonApplication.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── dialog │ │ │ │ └── OneDialogFragment.java │ │ │ │ ├── module │ │ │ │ ├── JavaJsCommunication │ │ │ │ │ └── JavaJsFragment.java │ │ │ │ ├── fastscrooll │ │ │ │ │ ├── FastScrollFragment.java │ │ │ │ │ ├── FastScrollLinearLayoutManager.java │ │ │ │ │ ├── FastScrollLinearSmoothScroller.java │ │ │ │ │ ├── SimpleTextAdapter.java │ │ │ │ │ └── SimpleTextViewHolder.java │ │ │ │ ├── ultraPtr │ │ │ │ │ ├── PtrPageFragment.java │ │ │ │ │ ├── SimpleTextAdapterM.java │ │ │ │ │ ├── base │ │ │ │ │ │ ├── BaseViewHolder.java │ │ │ │ │ │ ├── FooterRecyclerAdapter.java │ │ │ │ │ │ ├── FooterViewHolder.java │ │ │ │ │ │ ├── LoadFrameLayout.java │ │ │ │ │ │ └── LoadingMoreScrollListener.java │ │ │ │ │ └── sthElse │ │ │ │ │ │ ├── FooterDecoratorAdapter.java │ │ │ │ │ │ ├── LoadingFrameRecyclerAdapter.java │ │ │ │ │ │ └── LoadingFrameViewHolder.java │ │ │ │ └── watermark │ │ │ │ │ ├── MyDecoration.java │ │ │ │ │ ├── MyDrawable.java │ │ │ │ │ └── WatermarkFragment.java │ │ │ │ ├── util │ │ │ │ ├── LogUtil.java │ │ │ │ └── UIUtil.java │ │ │ │ └── view │ │ │ │ └── RecyclerViewDivider.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_java_js.xml │ │ │ ├── activity_main.xml │ │ │ ├── fragment_fastscroll.xml │ │ │ ├── fragment_page.xml │ │ │ ├── fragment_ptr.xml │ │ │ ├── holder_footer.xml │ │ │ ├── holder_frame_loading.xml │ │ │ ├── layout_empty.xml │ │ │ ├── layout_error.xml │ │ │ └── layout_loading.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── myapplication │ │ └── ExampleUnitTest.java ├── PerformanceApp │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── src │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── performance │ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── baiiu │ │ │ │ │ └── performance │ │ │ │ │ ├── AppBlockCanaryContext.java │ │ │ │ │ ├── BaseFragment.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── PerformanceApplication.java │ │ │ │ │ ├── UIUtil.java │ │ │ │ │ ├── fragments │ │ │ │ │ ├── LeakCanaryFragment.java │ │ │ │ │ ├── MergeFragment.java │ │ │ │ │ └── StrictModeFragment.java │ │ │ │ │ └── view │ │ │ │ │ └── ChurnView.java │ │ │ └── res │ │ │ │ ├── layout │ │ │ │ ├── activity_main.xml │ │ │ │ ├── fragment_leak_canary.xml │ │ │ │ ├── fragment_merge.xml │ │ │ │ ├── fragment_view_stub.xml │ │ │ │ ├── layout_company_avatar.xml │ │ │ │ └── viewstub_tv.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── performance │ │ │ └── ExampleUnitTest.java │ └── uiPerformanceOptimization.md ├── multiprocess │ ├── .gitignore │ ├── IBookManager.java │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── multiprocess │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── aidl │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── multiprocess │ │ │ │ ├── Book.aidl │ │ │ │ └── IBookManager.aidl │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── multiprocess │ │ │ │ ├── Book.java │ │ │ │ ├── BookManagerService.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApplication.java │ │ │ │ ├── SecondActivity.java │ │ │ │ ├── ThirdActivity.java │ │ │ │ ├── UserManager.java │ │ │ │ └── custom │ │ │ │ ├── CustomBookManager.java │ │ │ │ └── CustomBookManagerImpl.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ ├── activity_second.xml │ │ │ └── activity_third.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── multiprocess │ │ └── ExampleUnitTest.java ├── ptr-lib │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── checkstyle.xml │ ├── pom.xml │ ├── res │ │ ├── drawable-xhdpi │ │ │ └── ptr_rotate_arrow.png │ │ ├── layout │ │ │ ├── cube_ptr_classic_default_header.xml │ │ │ └── cube_ptr_simple_loading.xml │ │ ├── values-zh │ │ │ └── cube_ptr_string.xml │ │ └── values │ │ │ ├── cube_ptr_attrs.xml │ │ │ └── cube_ptr_string.xml │ └── src │ │ └── in │ │ └── srain │ │ └── cube │ │ └── views │ │ └── ptr │ │ ├── PtrClassicDefaultHeader.java │ │ ├── PtrClassicFrameLayout.java │ │ ├── PtrDefaultHandler.java │ │ ├── PtrFrameLayout.java │ │ ├── PtrHandler.java │ │ ├── PtrUIHandler.java │ │ ├── PtrUIHandlerHolder.java │ │ ├── PtrUIHandlerHook.java │ │ ├── header │ │ ├── MaterialHeader.java │ │ ├── MaterialProgressDrawable.java │ │ ├── StoreHouseBarItem.java │ │ ├── StoreHouseHeader.java │ │ └── StoreHousePath.java │ │ ├── indicator │ │ ├── PtrIndicator.java │ │ └── PtrTensionIndicator.java │ │ └── util │ │ ├── PtrCLog.java │ │ └── PtrLocalDisplay.java ├── researchStudy │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── baiiu │ │ │ └── workhard │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── test.png │ │ ├── java │ │ │ └── com │ │ │ │ └── baiiu │ │ │ │ └── workhard │ │ │ │ ├── BActivity.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── MyApplication.kt │ │ │ │ ├── anr │ │ │ │ ├── ANRFragment.kt │ │ │ │ └── ANRService.kt │ │ │ │ ├── base │ │ │ │ ├── BaseFragment.java │ │ │ │ └── MainThreadExecutor.kt │ │ │ │ ├── bitmap │ │ │ │ └── CountBitmap.kt │ │ │ │ ├── eventbus │ │ │ │ ├── EventBusFragment.java │ │ │ │ ├── Test.java │ │ │ │ ├── Test1.java │ │ │ │ ├── Test2.java │ │ │ │ └── Test3.java │ │ │ │ ├── foregroundService │ │ │ │ ├── MyService.kt │ │ │ │ └── TestForegroundService.kt │ │ │ │ ├── lock │ │ │ │ └── LockTest.java │ │ │ │ ├── referenceQueue │ │ │ │ ├── GarbageObject.java │ │ │ │ └── TestReferenceQueue.java │ │ │ │ ├── rx │ │ │ │ ├── Emitter.java │ │ │ │ ├── Function.java │ │ │ │ ├── Observable.java │ │ │ │ ├── ObservableOnSubscribe.java │ │ │ │ ├── Observer.java │ │ │ │ ├── Prediction.java │ │ │ │ ├── Scheduler.java │ │ │ │ ├── Schedulers.java │ │ │ │ └── ZZMainTest.java │ │ │ │ ├── spi │ │ │ │ ├── SPITest.java │ │ │ │ ├── log │ │ │ │ │ ├── AndroidLog.java │ │ │ │ │ ├── ILog.java │ │ │ │ │ └── ToastLog.java │ │ │ │ └── print │ │ │ │ │ ├── AndroidPrint.java │ │ │ │ │ ├── IPrint.java │ │ │ │ │ ├── JavaPrint.java │ │ │ │ │ └── ToastPrint.java │ │ │ │ ├── thread │ │ │ │ ├── ExecutorTest.java │ │ │ │ ├── MuchFutureTest.java │ │ │ │ ├── RejectedExecutionHandler.java │ │ │ │ ├── Test.java │ │ │ │ └── ThreadPoolExecutor.java │ │ │ │ └── touchEvent │ │ │ │ ├── MyView.java │ │ │ │ ├── MyView2.java │ │ │ │ ├── MyView3.java │ │ │ │ ├── MyViewGroup.java │ │ │ │ └── TouchEventFragment.java │ │ ├── res │ │ │ ├── drawable-xxhdpi │ │ │ │ └── image_test.png │ │ │ ├── layout │ │ │ │ ├── activity_b.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── fragment_anr.xml │ │ │ │ └── fragment_touch_event.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── com.baiiu.workhard.spi.print.IPrint │ │ └── test │ │ └── java │ │ └── com │ │ └── baiiu │ │ └── workhard │ │ └── ExampleUnitTest.java └── touchEventStudy │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── baiiu │ │ └── toucheventstudy │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── baiiu │ │ │ └── toucheventstudy │ │ │ ├── MainActivity.java │ │ │ ├── base │ │ │ ├── BaseFragment.java │ │ │ ├── BaseViewHolder.java │ │ │ └── MyApplication.java │ │ │ ├── behaviors │ │ │ ├── ScrollAwareBehavior.java │ │ │ ├── ScrollUpDownBehavior.java │ │ │ └── SimpleBehavior.java │ │ │ ├── list │ │ │ ├── ListScrollFragment.java │ │ │ ├── SimpleTextAdapter.java │ │ │ └── SimpleTextViewHolder.java │ │ │ ├── simpleSample │ │ │ ├── ATextView.java │ │ │ ├── SimpleBehaviorFragment.java │ │ │ └── TempView.java │ │ │ └── viewDragHelper │ │ │ ├── VHLinearLayout.java │ │ │ └── ViewDragHelperFragment.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── fragment_coordinator_simple.xml │ │ ├── fragment_drag_helper.xml │ │ └── fragment_fastscroll.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── baiiu │ └── toucheventstudy │ └── ExampleUnitTest.java └── unitTestStudy ├── README.md ├── build.gradle ├── proguard-rules.pro └── src ├── androidTest └── java │ └── com │ └── example │ └── testing │ └── testingexample │ ├── ApplicationTest.java │ ├── EspressoTest.java │ ├── EspressoTestJUnitStyle.java │ ├── LocalInstrumentedUnitTest.java │ ├── UiautomatorTest.java │ └── UiautomatorTestJunitStyle.java ├── main ├── AndroidManifest.xml ├── java │ └── com │ │ └── example │ │ └── testing │ │ └── testingexample │ │ ├── Calculator.java │ │ ├── CommonUtil.java │ │ └── MainActivity.java └── res │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── test └── java └── com └── example └── testing └── testingexample ├── CommonUtilTest.java └── LocalUnitTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | local.properties 4 | .DS_Store 5 | build 6 | captures 7 | .idea 8 | gen 9 | repo 10 | .cxx -------------------------------------------------------------------------------- /CommonTool/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.base; 2 | 3 | import androidx.fragment.app.Fragment; 4 | 5 | import com.baiiu.commontool.app.UIUtil; 6 | 7 | /** 8 | * auther: baiiu 9 | * time: 16/6/10 10 16:37 10 | * description: 11 | */ 12 | public class BaseFragment extends Fragment { 13 | 14 | 15 | @Override public void onDestroy() { 16 | super.onDestroy(); 17 | 18 | UIUtil.getRefWatcher() 19 | .watch(this); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/mvp/MVPPresenter.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.mvp; 2 | 3 | /** 4 | * Every presenter in the app must either implement this interface or extend BasePresenter 5 | * indicating the MvpView type that wants to be attached with. 6 | */ 7 | public interface MVPPresenter { 8 | 9 | void start(); 10 | 11 | void attachView(V mvpView); 12 | 13 | void detachView(); 14 | } 15 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/mvp/MvpView.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.mvp; 2 | 3 | 4 | /** 5 | * Base interface that any class that wants to act as a View in the MVP (Model View Presenter) 6 | * pattern must implement. Generally this interface will be extended by a more specific interface 7 | * that then usually will be implemented by an Activity or Fragment. 8 | */ 9 | public interface MvpView { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/net/ApiContants.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.net; 2 | 3 | /** 4 | * author: baiiu 5 | * date: on 16/5/16 17:47 6 | * description: 7 | */ 8 | public interface ApiContants { 9 | 10 | String GITHUB_BASEURL = "https://api.github.com/"; 11 | } 12 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/net/retrofit/HttpHelper.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.net.retrofit; 2 | 3 | /** 4 | * auther: baiiu 5 | * time: 16/5/17 17 07:35 6 | * description: 7 | */ 8 | public class HttpHelper { 9 | 10 | public static String getUserAgent() { 11 | return "UA"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/net/util/NetWorkReceiver.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.net.util; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | /** 8 | * Created by baiiu on 15/11/17. 9 | * 监听网络变化. 10 | */ 11 | public class NetWorkReceiver extends BroadcastReceiver { 12 | 13 | @Override 14 | public void onReceive(Context context, Intent intent) { 15 | 16 | if (HttpNetUtil.setConnected()) { 17 | //if turns to true, show post event to refresh UI 18 | } 19 | 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /CommonTool/src/main/java/com/baiiu/commontool/util/Constant.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool.util; 2 | 3 | /** 4 | * author: baiiu 5 | * date: on 16/2/19 17:47 6 | * description: 7 | */ 8 | public interface Constant { 9 | String PREFERENCE_CONFIG = "preference_config"; 10 | } 11 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/layout/layout_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/CommonTool/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /CommonTool/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | #7f000000 8 | 9 | #222c38 10 | #969fa9 11 | 12 | 13 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | CommonTool 3 | 4 | -------------------------------------------------------------------------------- /CommonTool/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /CommonTool/src/test/java/com/baiiu/commontool/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.commontool; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test public void addition_isCorrect() throws Exception { 14 | assertEquals(4, 2 + 2); 15 | } 16 | } -------------------------------------------------------------------------------- /JavaLib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /JavaLib/src/main/java/com/baiiu/java/Base.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.java; 2 | 3 | public class Base { 4 | public void process() { 5 | System.out.println("start"); 6 | System.out.println("process"); 7 | System.out.println("end"); 8 | } 9 | } -------------------------------------------------------------------------------- /JavaLib/src/main/java/com/baiiu/java/Test.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.java; 2 | 3 | /** 4 | * author: zhuzhe 5 | * time: 2020-02-21 6 | * description: 7 | */ 8 | public class Test { 9 | 10 | public static void main(String[] args) { 11 | /* 12 | 父类静态变量、静态代码块 13 | 子类静态变量、静态代码块 14 | 15 | 父类成员变量、构造代码块、构造函数 16 | 子类成员变量、构造代码块、构造函数 17 | */ 18 | 19 | new Child().function(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /JavaLib/src/main/java/com/baiiu/java/TestLazy.kt: -------------------------------------------------------------------------------- 1 | package com.baiiu.java 2 | 3 | open class ParentA { 4 | init { 5 | println("ParentA构造") 6 | aaaaa() 7 | } 8 | open fun aaaaa() { 9 | } 10 | } 11 | class ChildA : ParentA() { 12 | private val a by lazy { 1 } 13 | init { 14 | println("ChildA构造") 15 | } 16 | override fun aaaaa() { 17 | println(a) 18 | } 19 | } 20 | class TeastSafe { 21 | private val a by lazy { 1 } 22 | 23 | init { 24 | println(a) 25 | } 26 | } 27 | fun main(args: Array) { 28 | TeastSafe() 29 | ChildA() 30 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LearnTechDemo 2 | This project is mean to learn something in Android, now there are: 3 | 4 | - hook 5 | 尝试各种hook方案,打开testapk 6 | 7 | - plugin 8 | 学习gradle语言,gradle基础 9 | gradle插件 10 | 11 | - majjorFrame: 12 | 学习主流三方框架 13 | 14 | - liteOrm 数据库框架 15 | - retrofit 使用和封装 16 | - RxJava 使用和常用操作符封装 17 | 18 | 19 | - unitTest 20 | 单元测试 21 | 22 | - someApplications 23 | 写些demo 24 | 研究些东西 -------------------------------------------------------------------------------- /buildSystem/artifacts.gradle: -------------------------------------------------------------------------------- 1 | // applicationName property to gradle.properties 2 | android.applicationVariants.all { variant -> 3 | variant.outputs.each { output -> 4 | def outputFile = output.outputFile 5 | if (outputFile != null && outputFile.name.endsWith('.apk')) { 6 | def fileName = outputFile.name.replace(".apk", "_${rootProject.ext.versionName}_${releaseTime()}.apk") 7 | output.outputFile = new File(outputFile.parent, fileName) 8 | } 9 | } 10 | } 11 | 12 | def releaseTime() { 13 | return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) 14 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 03 12:19:49 CST 2025 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists -------------------------------------------------------------------------------- /hook/README.md: -------------------------------------------------------------------------------- 1 | ## hook 2 | 3 | 4 | http://weishu.me/2016/01/28/understand-plugin-framework-overview/ -------------------------------------------------------------------------------- /hook/hookapp/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/assets/app-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/assets/app-debug.apk -------------------------------------------------------------------------------- /hook/hookapp/src/main/java/com/baiiu/hookapp/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.hookapp; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import java.lang.reflect.Field; 7 | 8 | /** 9 | * author: zhuzhe 10 | * time: 2020-01-15 11 | * description: 12 | */ 13 | public class MyApplication extends Application { 14 | private static Context sContext; 15 | 16 | @Override 17 | protected void attachBaseContext(Context base) { 18 | super.attachBaseContext(base); 19 | } 20 | 21 | @Override 22 | public void onCreate() { 23 | super.onCreate(); 24 | sContext = this; 25 | } 26 | 27 | public static Context getContext() { 28 | return sContext; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/java/com/baiiu/hookapp/SecondActivity.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.hookapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class SecondActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/java/com/baiiu/hookapp/loadedApkHook/CustomClassLoader.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.hookapp.loadedApkHook; 2 | 3 | import dalvik.system.DexClassLoader; 4 | 5 | /** 6 | * author: zhuzhe 7 | * time: 2020-02-03 8 | * description: 9 | */ 10 | public class CustomClassLoader extends DexClassLoader { 11 | 12 | public CustomClassLoader(String dexPath, String optimizedDirectory, String libraryPath, ClassLoader parent) { 13 | super(dexPath, optimizedDirectory, libraryPath, parent); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/layout/activity_target.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 16 | 17 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/hookapp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | hookapp 3 | 4 | -------------------------------------------------------------------------------- /hook/hookapp/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /hook/hookapp/src/test/java/com/baiiu/hookapp/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.hookapp; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /hook/testapk/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/hook/testapk/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /hook/testapk/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /hook/testapk/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /hook/testapk/src/test/java/com/baiiu/testapk/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.baiiu.testapk 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /jni/README.md: -------------------------------------------------------------------------------- 1 | ## 参考 2 | 3 | https://juejin.im/post/5a2a3f416fb9a0450167df22 -------------------------------------------------------------------------------- /jni/cmaketest/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /jni/cmaketest/src/main/cpp/fibo.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by baiiu on 2021/4/19. 3 | // 4 | 5 | int test(int n) { 6 | if (n <= 2) { 7 | return 1; 8 | } 9 | 10 | int first = 1; 11 | int second = 1; 12 | int num = 0; 13 | 14 | while (n > 2) { 15 | num = first + second; 16 | --n; 17 | first = second; 18 | second = num; 19 | } 20 | 21 | return num; 22 | 23 | } -------------------------------------------------------------------------------- /jni/cmaketest/src/main/cpp/fibo.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by baiiu on 2021/4/19. 3 | // 4 | 5 | #ifndef ANDROIDMODULE_FIBO_H 6 | #define ANDROIDMODULE_FIBO_H 7 | 8 | int test(int n); 9 | 10 | #endif //ANDROIDMODULE_FIBO_H 11 | -------------------------------------------------------------------------------- /jni/cmaketest/src/main/java/com/baiiu/cmaketest/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.cmaketest; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | static { 9 | System.loadLibrary("native-lib"); 10 | } 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.activity_main); 16 | 17 | android.util.Log.e("mLogU", hello()); 18 | } 19 | 20 | private native String hello(); 21 | 22 | private void cCallJava(boolean bool, long number) { 23 | android.util.Log.e("mLogU", bool + ", " + number); 24 | } 25 | } -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baiiu/AndroidModule/53ae50cff30cffbba500a7e1f104d659a4c5fdfc/jni/cmaketest/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /jni/cmaketest/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | cmaketest 3 | -------------------------------------------------------------------------------- /jni/cmaketest/src/test/java/com/baiiu/cmaketest/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.cmaketest; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /jni/jnitest/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/cpp/epoll/testepoll.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by baiiu on 2021/3/2. 3 | // 4 | 5 | #include "jni.h" 6 | 7 | extern "C" 8 | JNIEXPORT void JNICALL 9 | Java_com_baiiu_jnitest_epoll_EpollFragment_testEpoll(JNIEnv *env, jobject thiz) { 10 | 11 | } -------------------------------------------------------------------------------- /jni/jnitest/src/main/cpp/people/People.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by baiiu on 2020/5/23. 3 | // 4 | 5 | #include "People.h" 6 | 7 | std::string People::getString() { 8 | return "this is from people"; 9 | } 10 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/cpp/people/People.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by baiiu on 2020/5/23. 3 | // 4 | 5 | #ifndef ANDROIDMODULE_PEOPLE_H 6 | #define ANDROIDMODULE_PEOPLE_H 7 | 8 | #include 9 | 10 | class People { 11 | 12 | public: 13 | std::string getString(); 14 | 15 | }; 16 | 17 | 18 | #endif //ANDROIDMODULE_PEOPLE_H 19 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/java/com/baiiu/jnitest/dynamicLoad/DynamicLoad.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.jnitest.dynamicLoad; 2 | 3 | public class DynamicLoad { 4 | 5 | static { 6 | System.loadLibrary("dynamic-lib"); 7 | } 8 | 9 | public native int sum(int x, int y); 10 | 11 | public native String getNativeString(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/java/com/baiiu/jnitest/epoll/EpollFragment.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.jnitest.epoll; 2 | 3 | import com.baiiu.jnitest.base.BaseFragment; 4 | 5 | /** 6 | * author: baiiu 7 | * time: 2021/3/2 8 | * description: 9 | */ 10 | public class EpollFragment extends BaseFragment { 11 | 12 | static { 13 | System.loadLibrary("epoll-lib"); 14 | } 15 | 16 | @Override 17 | protected void initOnCreateView() { 18 | testEpoll(); 19 | } 20 | 21 | private native void testEpoll(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/java/com/baiiu/jnitest/thread/ThreadCreateFragment.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.jnitest.thread; 2 | 3 | import com.baiiu.jnitest.base.BaseFragment; 4 | 5 | public class ThreadCreateFragment extends BaseFragment { 6 | static { 7 | System.loadLibrary("thread-lib"); 8 | } 9 | 10 | @Override 11 | protected void initOnCreateView() { 12 | // createNativeThread(); 13 | // createNativeThreadWithArgs(); 14 | joinNativeThread(); 15 | } 16 | 17 | // 创建线程 18 | private native void createNativeThread(); 19 | 20 | // 创建线程并传参 21 | private native void createNativeThreadWithArgs(); 22 | 23 | private native void joinNativeThread(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/java/com/baiiu/jnitest/thread/ThreadMutexFragment.java: -------------------------------------------------------------------------------- 1 | package com.baiiu.jnitest.thread; 2 | 3 | import com.baiiu.jnitest.base.BaseFragment; 4 | 5 | public class ThreadMutexFragment extends BaseFragment { 6 | static { 7 | System.loadLibrary("thread-lib"); 8 | } 9 | 10 | @Override 11 | protected void initOnCreateView() { 12 | print12to100(); 13 | 14 | multi(); 15 | } 16 | 17 | private native void print12to100(); 18 | 19 | private native void multi(); 20 | } 21 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/res/layout/fragment_basic.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /jni/jnitest/src/main/res/layout/fragment_dynamic.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 |