Skip to content

Commit

Permalink
修复选择图片在8.0系统时崩溃的问题。
Browse files Browse the repository at this point in the history
调整开发库中部分框架的依赖模式。
其他优化。
  • Loading branch information
LJYcoder committed Apr 20, 2018
1 parent 81607ca commit a5f5f02
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 54 deletions.
48 changes: 17 additions & 31 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ android {
defaultConfig {
applicationId "com.dev.base"
minSdkVersion 14
targetSdkVersion 23
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

//指定EventBus加速用的Index
javaCompileOptions {
annotationProcessorOptions {
arguments = [ eventBusIndex : "com.dev.base.MyEventBusIndex" ]
arguments = [eventBusIndex: "com.dev.base.MyEventBusIndex"]
}
}
}
Expand All @@ -38,10 +38,10 @@ android {
signingConfig signingConfigs.config//使用上面配置的签名进行打包
}

debug {
minifyEnabled false
signingConfig signingConfigs.config//debug模式下也使用上面配置的签名进行打包
}
debug {
minifyEnabled false
signingConfig signingConfigs.config//debug模式下也使用上面配置的签名进行打包
}
}

//greendao配置
Expand Down Expand Up @@ -75,11 +75,17 @@ dependencies {

//依赖Devring库
//该库中已添加了Dagger2,Retrofit2,RxJava2,RxAndroid2,RxLifeCycle2,RxPermission2的依赖,不必重复添加。
//但是Dagger2需要使用到的注解处理器还需在主项目中另行添加。
//另外,由于DevRing库的数据库模块、图片加载模块、事件总线模块支持替换掉默认实现的框架,
//所以库中对GreenDao,Glide,EventBus是采用compileOnly(仅在编译时依赖),这么做是为了避免被替换的框架依然参与打包,从而增加了apk大小。
//也就是说,当你需要使用相关框架时,还需在主项目中添加其依赖。
compile project(path:':devring')
api (project(path: ':devring')) {
//exclude module: 'glide' //如果不使用图片加载模块或者该模块不使用glide实现,那么可以加上这句移除Devring库中对glide的依赖以减小包体积
//exclude module: 'eventbus' //如果不使用事件总线模块或者该模块不使用eventbus实现,那么可以加上这句移除Devring库中对eventbus的依赖以减小包体积
//exclude module: 'greendao' //如果不使用数据库模块或者该模块不使用greendao实现,那么可以加上这句移除Devring库中对greendao的依赖以减小包体积
}

//══════════════════════资源绑定(ButterKnife)开始══════════════════════
api 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'//用于butterknife在编译时根据注解生成相关文件
//══════════════════════资源绑定(ButterKnife)结束══════════════════════


//══════════════════════依赖注入(Dagger2)开始══════════════════════
//如果你项目需要使用到dagger2,那就需要添加注解处理器的依赖
Expand All @@ -88,12 +94,6 @@ dependencies {


//══════════════════════图片加载开始══════════════════════
//如果你需要使用Devring库的图片加载模块(默认使用Glide),那么你需要添加Glide依赖
//当然,你也可以用其他图片框架替换掉默认的Glide,这样的话那就不用添加Glide依赖了。
//具体替换步骤请参考demo或使用文档,demo中演示了如何使用Fresco替换掉默认的Glide。
//Glide
api 'com.github.bumptech.glide:glide:4.4.0'

//Fresco
//为了演示如何使用Fresco替换掉DevRing中默认的Glide,需添加Fresco的相关依赖
//Fresco体积较大,如果对图片加载要求不高,建议使用Glide
Expand All @@ -105,27 +105,13 @@ dependencies {


//══════════════════════数据库(GreenDao)开始══════════════════════
//如果你需要使用Devring库的数据库模块(默认使用GreenDao),那么你需要添加GreenDao依赖
//当然,你也可以用其他数据库框架替换掉默认的GreenDao,这样的话那就不用添加GreenDao依赖了。
//具体替换步骤请参考demo或使用文档,demo中演示了如何使用原生的数据库替换掉默认的GreenDao。
api 'org.greenrobot:greendao:3.2.0'
// api 'net.zetetic:android-database-sqlcipher:3.5.7'//使用加密数据库时需要添加,使用后会apk会变大很多,如果对安全性要求不高,不建议使用
//══════════════════════数据库(GreenDao)结束══════════════════════


//══════════════════════事件总线(EventBus)开始══════════════════════
//如果你需要使用Devring库的事件总线模块(默认使用EventBus),那么你需要添加EventBus依赖
//当然,你也可以用其他事件总线框架替换掉默认的EventBus,这样的话那就不用添加EventBus依赖了。
//具体替换步骤请参考demo或使用文档,demo中演示了如何使用RxBus替换掉默认的EventBus。
api 'org.greenrobot:eventbus:3.0.0'
annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.0.1'//用于eventbus在编译时生成加速用的Index文件
//══════════════════════事件总线(EventBus)结束══════════════════════


//══════════════════════资源绑定(ButterKnife)开始══════════════════════
api 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'//用于butterknife在编译时根据注解生成相关文件
//══════════════════════资源绑定(ButterKnife)结束══════════════════════

}

1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

<!-- 网络权限DevRing库中已添加,所以这里不必重复添加 -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/dev/base/app/RingApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public void onCreate() {

//事件总线模块(可替换,demo演示了如何使用RxBus替换默认的EventBus)
// DevRing.configureBus()//配置默认的EventBus
// .setIndex(new MyEventBusIndex())//设置用于加速的Index
// .setIndex(new MyEventBusIndex())//设置用于加速的Index,关于index加速可以查看https://www.jianshu.com/p/6fb4d78db19b
// .setIsUseIndex(true);//设置是否使用index进行加速
DevRing.configureBus(new RxBusManager());//传入RxBus的管理者进行替换

Expand Down
27 changes: 16 additions & 11 deletions app/src/main/java/com/dev/base/mvp/model/UploadModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,19 +84,24 @@ public File handlePhoto(int reqCode, Intent intent, Uri photoUri, Activity activ
//裁减图片为500*500尺寸,并且压缩图片为不大于3M的大小(为了更好地查看上传过程,这里就不进行压缩了)
// mBitmap = ImageUtil.qualityCompress(ImageUtil.scaleCompress(mFilePath, 500, 500), 3 * 1024);
mBitmap = ImageUtil.fileToBitmap(mFilePath);
// 进行旋转,否则得到的图片可能会方向不对。
Matrix matrix = new Matrix();
matrix.preRotate(ImageUtil.fixDirection(mFilePath));
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
if (mBitmap != null) {
// 进行旋转,否则得到的图片可能会方向不对。
Matrix matrix = new Matrix();
matrix.preRotate(ImageUtil.fixDirection(mFilePath));
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);

//保存图片到文件
String imageName = "avatar_" + CommonUtil.getRandomString(5) + ".jpg";
File filePhoto = FileUtil.getFile(FileUtil.getDirectory(FileUtil.getExternalCacheDir(activity),"upload_image"), imageName);
if (ImageUtil.saveBitmapToFile(mBitmap, filePhoto)) {
mBitmap.recycle();
return filePhoto;
//保存图片到文件
String imageName = "avatar_" + CommonUtil.getRandomString(5) + ".jpg";
File filePhoto = FileUtil.getFile(FileUtil.getDirectory(FileUtil.getExternalCacheDir(activity),"upload_image"), imageName);
if (ImageUtil.saveBitmapToFile(mBitmap, filePhoto)) {
mBitmap.recycle();
return filePhoto;
}
return null;
}else{
return null;
}
return null;

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,11 @@ public void onDeniedWithNeverAsk(String permissionName) {
//如果用户拒绝了其中一个授权请求,且勾选了不再提醒,则需要引导用户到权限管理页面开启
mPermissionDialog.show();
}
}, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA);
}, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA);
//小Tips:
//android6.0权限申请中,只要某个权限授予了,那么与它在同一个权限组里的其他权限都会自动授权.
//android8.0后规则有所改动,某个权限授予后,与它在同一个权限组里的其他权限并不会自动授权
//https://blog.csdn.net/yanzhenjie1003/article/details/76719487
break;

case R.id.btn_item_camera:
Expand Down Expand Up @@ -191,7 +195,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFilePhoto = mPresenter.handlePhoto(requestCode, data, mPhotoUri);
if (mFilePhoto != null) {
DevRing.imageManager().loadFile(mFilePhoto, mIvPhoto);
}else{
} else {
RingToast.show(mStrOperateFail);
}
break;
Expand Down
12 changes: 4 additions & 8 deletions devring/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,16 @@ dependencies {
api 'com.google.dagger:dagger:2.14.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'

//由于DevRing库的数据库模块、图片加载模块、事件总线模块支持替换掉默认实现的框架,
//所以库中对GreenDao,Glide,EventBus是采用compileOnly(仅在编译时依赖),这么做是为了避免被替换的框架依然加入到apk中影响包大小,
//也就是说,当你需要使用相关框架时,还需在主项目中添加相关依赖。

//Glide图片加载
compileOnly 'com.github.bumptech.glide:glide:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
api 'com.github.bumptech.glide:glide:4.4.0'
api 'jp.wasabeef:glide-transformations:3.1.1@aar'//图片转换工具
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'

//greenDAO数据库
compileOnly 'org.greenrobot:greendao:3.2.0'
api 'org.greenrobot:greendao:3.2.0'

//EventBus事件总线
compileOnly 'org.greenrobot:eventbus:3.0.0'
api 'org.greenrobot:eventbus:3.0.0'

}

Expand Down

0 comments on commit a5f5f02

Please sign in to comment.