Giter Site home page Giter Site logo

afkt / devutils Goto Github PK

View Code? Open in Web Editor NEW
1.3K 42.0 298.0 15.51 MB

:fire: ( 持续更新,目前含 300+ 工具类 ) DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。

License: Apache License 2.0

Java 81.36% Kotlin 18.64%
androidx permission bitmap snackbar activity reflect shell encrypt animation utils android mvp mvvm viewbinding databingding environment coroutines jetpack kotlin retrofit2

devutils's Introduction

DevUtils

Profile License Version API Version Utils

🔥 ( 持续更新,目前含 300+ 工具类 ) Roadmap
DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。
该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。

Android 规范 Java 规范 Git 规范

module

Dev 系列开发库全部 Lib Gradle API READMEDevApp API

// DevApp - Android 工具类库
implementation 'io.github.afkt:DevAppX:2.4.4'

// DevAssist - 封装逻辑代码, 实现多个快捷功能辅助类、以及 Engine 兼容框架等
implementation 'io.github.afkt:DevAssist:1.4.0'

// DevBase - Base ( Activity、Fragment )、MVP、ViewBinding、ContentLayout 基类库
implementation 'io.github.afkt:DevBase:1.1.6'

// DevBaseMVVM - MVVM ( ViewDataBinding + ViewModel ) 基类库
implementation 'io.github.afkt:DevBaseMVVM:1.1.4'

// DevEngine - 第三方框架解耦、一键替换第三方库、同类库多 Engine 组件化混合使用
implementation 'io.github.afkt:DevEngine:1.1.2'

// DevHttpCapture - OkHttp 抓包工具库
implementation 'io.github.afkt:DevHttpCapture:1.1.6'

// DevHttpCaptureCompiler - OkHttp 抓包工具库 ( 可视化功能 )
debugImplementation 'io.github.afkt:DevHttpCaptureCompiler:1.1.6'
releaseImplementation 'io.github.afkt:DevHttpCaptureCompilerRelease:1.1.6'

// DevHttpManager - OkHttp 管理库 ( Retrofit 多 BaseUrl 管理、Progress 监听 )
implementation 'io.github.afkt:DevHttpManager:1.0.5'

// DevRetrofit - Retrofit + Kotlin Coroutines 封装
implementation 'io.github.afkt:DevRetrofit:1.0.4'

// DevWidget - 自定义 View UI 库
implementation 'io.github.afkt:DevWidgetX:1.2.2'

// DevEnvironment - Android 环境配置切换库
implementation 'io.github.afkt:DevEnvironment:1.1.4'
debugAnnotationProcessor 'io.github.afkt:DevEnvironmentCompiler:1.1.4' // kaptDebug
releaseAnnotationProcessor 'io.github.afkt:DevEnvironmentCompilerRelease:1.1.4' // kaptRelease
//annotationProcessor 'io.github.afkt:DevEnvironmentCompiler:1.1.4' // kapt

// DevJava - Java 工具类库 ( 不依赖 android api )
implementation 'io.github.afkt:DevJava:1.5.0' // 用于纯 Java 开发,如果依赖了 DevApp 则不需要依赖 DevJava

赞赏

如果你喜欢 DevUtils 的设计,感觉它帮助到了你,并且很想支持该库的后续开发和维护,那么可以扫描下方的二维码,请作者喝一杯咖啡~

License

Copyright 2018 afkT

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

devutils's People

Contributors

afkt 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

devutils's Issues

发现demo在使用DevEnvironment过程中会出现如下问题 ,华为8.10 10.0.0 都有这个报错信息

在使用DevEnvironment ,发现demo再使用过程中会出现如下问题 ,华为8.10 10.0.0 都有这个报错信息 ,权限都已获取到;

java.io.FileNotFoundException: /data/user/0/afkt.project/cache/DevEnvironment/MODULE_MAP: open failed: ENOENT (No such file or directory)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at libcore.io.IoBridge.open(IoBridge.java:496)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at java.io.FileInputStream.(FileInputStream.java:159)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at dev.environment.DevEnvironment.readStorage(DevEnvironment.java:588)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at dev.environment.DevEnvironment.getMapEnvironment(DevEnvironment.java:395)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at dev.environment.Utils.getModuleEnvironment(Utils.java:116)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at dev.environment.AdapterItem.refreshHashCode(AdapterItem.java:75)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at dev.environment.DevEnvironmentActivity.onCreate(DevEnvironmentActivity.java:94)
2020-11-24 19:24:28.620 26996-26996/afkt.project W/System.err: at android.app.Activity.performCreate(Activity.java:8066)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.Activity.performCreate(Activity.java:8054)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3733)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3939)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2373)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.os.Handler.dispatchMessage(Handler.java:107)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.os.Looper.loop(Looper.java:213)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.ActivityThread.main(ActivityThread.java:8147)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at libcore.io.Linux.open(Native Method)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8015)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: at libcore.io.IoBridge.open(IoBridge.java:482)
2020-11-24 19:24:28.621 26996-26996/afkt.project W/System.err: ... 22 more

ava.lang.Exception: Toast callstack!

设备是雷电模拟器4.0.68
安卓版本是25
使用 ToastUtils.showShort("跳过广告") 的时候报错

java.lang.Exception: Toast callstack! strTip=跳过广告
at android.widget.Toast.show(Toast.java:130)
at dev.utils.app.toast.ToastUtils.lambda$priShowToastText$0(ToastUtils.java:504)
at dev.utils.app.toast.ToastUtils$$ExternalSyntheticLambda1.run(D8$$SyntheticClass)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6161)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)

DateUtils.isInTimeHHmmss("7:00","7:00")

DateUtils.isInTimeHHmmss("7:00","7:00")返回false
如果startTime和endTime相同的话
startTime应该是为今天的时间 endTime应该为第二天的时间

FileUtils

如果可以的话,增加一个:是否拥有文件夹或文件读写的权限判断

版本适配库

建议单独出一个库(如果有时间),毕竟版本适配对于小白各个方面不是很周到,需要一个傻瓜式的,可以按照file的api命名编写,无需其他使用成本,直接过渡,库内判断android版本,对于增删改查,移动复制删除,一条命令自动对应当前android版本执行适用于当前系统版本的命令,使用者只需按照之前的File的api使用,库内直接封装好各个版本的适配api

JSON to Code报错问题

image 输出的错误: Error: undefined is not an object (evaluating 'window.QuickType[methodName]')

BitmapUtils 压缩有问题

/**
* 按质量压缩 ( 图片大小 )
* @param bitmap 待操作源图片
* @param maxByteSize 允许最大值字节数
* @return 质量压缩过的图片
*/
public static Bitmap compressByByteSize(final Bitmap bitmap, final long maxByteSize) {
return compressByByteSize(bitmap, Bitmap.CompressFormat.JPEG, maxByteSize, null);
}

/**
 * 按质量压缩 ( 图片大小 )
 * @param bitmap      待操作源图片
 * @param format      图片压缩格式
 * @param maxByteSize 允许最大值字节数
 * @return 质量压缩过的图片
 */
public static Bitmap compressByByteSize(final Bitmap bitmap, final Bitmap.CompressFormat format, final long maxByteSize) {
    return compressByByteSize(bitmap, format, maxByteSize, null);
}

你没看错,我又来了

我之前写了个工具类,就是通过包名,反射获取资源id,value,这个你要么,要的话我回头整理下发你,你塞里吧

DevEnvironment 的DevEnvironmentActivity 界面显示错误

复现步骤:
修改 多个alias
如 :
@module(alias = "IM 模块")
private class IM {

    @Environment(value = "https://im.release.com/", isRelease = true, alias = "线上@环境")
    private String release;

    @Environment(value = "https://im.debug.com", alias = "测试@环境")
    private String debug;
}

界面按照代码显示应该两个选项 ,会出现重复图中第三不应该出现 ;必须卸载app再次安装才能现在正常
image

AppUtils

建议增加代码【获取所有已安装的应用】和【获取所有 能够显示在 桌面上的 应用】
获取所有已安装的应用
private List<String> getInstalledPackages(Context context) { List<String> installedPackageList = new ArrayList<>(); List<PackageInfo> installedPackageInfoList = context.getPackageManager().getInstalledPackages(PackageManager.MATCH_UNINSTALLED_PACKAGES); for (PackageInfo packageInfo: installedPackageInfoList) { installedPackageList.add(packageInfo.packageName); } return installedPackageList; }

获取所有 能够显示在 桌面上的 应用
`private List getAllLauncherIconPackages(Context context) {
List launcherIconPackageList = new ArrayList<>();

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    //set MATCH_ALL to prevent any filtering of the results
    List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_ALL);
    for (ResolveInfo info: resolveInfos) {
        launcherIconPackageList.add(info.activityInfo.packageName);
    }

    return launcherIconPackageList;
}

`

PermissionUtil禁止显示后,没有跳转到对应app权限列表

//PermissionActivity 内部activity

protected static void start(final Context context) {

        //源码
        Intent starter = new Intent(context, PermissionActivity.class);
        starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(starter);

        //可以修改为
        Uri packageURI = Uri.parse("package:" + AppUtils.getPackageName());
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
        context.startActivity(intent);
    }

SPUtils不好用

SPUtils总是报java.lang.ClassCastException,搞得都不知道到底存的啥,取得啥了!希望能改改~

截图工具类

CapturePictureUtils 截图工具类截图Recyclerview的时候 如果item 里面有自定义view+动画 截图下来动画初始值一直未0
请问这个有没有解决办法 谢谢
image

SharedUtils

com.github.afkT:DevUtils:1.7.6@aar

当下面三行同时执行

SharedUtils.put(“k”,v);
android.os.Process.killProcess(android.os.Process.myPid());
finish();

的时候,有时候数据是保存不成功的。
单单执行SharedUtils.put(“k”,v);是没问题的。

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.