ProGuard混淆web项目求帮忙看看什么问题....不知道怎么弄下去....混淆不到 2C

Warning: com.server.Application$ShutdownHook: can't find referenced method 'void stop(org.red5.server.api.scope.IScope)' in program class com.server.Application
Note: com.server.db.SqlHelper calls '(java.sql.Driver)Class.forName(variable).newInstance()'
Note: com.server.platform.Lenovo.ConvertUtils accesses a constructor '(java.lang.String)' dynamically
Maybe this is program method 'com.server.AI.AIRunner { AIRunner(java.lang.String); }'
Maybe this is program method 'com.server.exception.ClientCallProcessException { ClientCallProcessException(java.lang.String); }'

Note: there were 1 class casts of dynamically created class instances.
You might consider explicitly keeping the mentioned classes and/or
their implementations (using '-keep').
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclasscast)
Note: there were 1 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
Warning: there were 1 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
Please correct the above warnings first.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
proguard混淆#unexpectedclass warning
新手,不知道什么错误 ProGuard, version 6.0.3 Reading program jar [F:\c.jar] Warning: class [Test$Bomber.class] unexpectedly contains class [proguard.Test$Bomber] Warning: class [Test$Flight.class] unexpectedly contains class [proguard.Test$Flight] Warning: class [Test.class] unexpectedly contains class [proguard.Test] Reading library jar [C:\Program Files\Java\jdk1.8.0_141\jre\lib\rt.jar] Warning: there were 3 classes in incorrectly named files. You should make sure all file names correspond to their class names. The directory hierarchies must correspond to the package hierarchies. (http://proguard.sourceforge.net/manual/troubleshooting.html#unexpectedclass) If you don't mind the mentioned classes not being written out, you could try your luck using the '-ignorewarnings' option. Please correct the above warnings first.
Proguard混淆后的jar包 不显示图片
SWT项目,用proguard工具混淆后,生成的jar包,打开后不显示窗口图片是什么原因? 项目中 图片所在文件夹 放在 src 文件夹下。 有proguard熟悉的可以说说吗?是需要proguard配置文件中添加什么keep项吗?
android proguard混淆后,效果和原来的不一致
最近在学习android proguard,但是看了很多的博客和demo,自己练手的时候出现的问题久久不会解决,郁闷已久,虽求助大家。 问题描述:一个android动画的demo,没有混淆之后效果都能实现,但是混淆之后动画效果都没有效果了。 我引用了一个第三方jar包:afinal_0.5.1_bin.jar proguard-project.txt: -dontoptimize -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -dontwarn -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keepattributes InnerClasses,LineNumberTable -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keep class net.tsz.afinal.**{*;} -keep class android.webkit.**{*;} -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class **.R$* { *; } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } ```MainActivity.java package com.example.animation; import net.tsz.afinal.FinalActivity; import net.tsz.afinal.annotation.view.ViewInject; import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends FinalActivity { @ViewInject(id = R.id.btn_scale_anim, click = "onClick") private Button mBtnScale; @ViewInject(id = R.id.btn_alpha_anim, click = "onClick") private Button mBtnAlpha; @ViewInject(id = R.id.btn_rotate_anim, click = "onClick") private Button mBtnRotate; @ViewInject(id = R.id.btn_translate_anim, click = "onClick") private Button mBtnTranslate; @ViewInject(id = R.id.btn_continue_one, click = "onClick") private Button mBtnContinueOne; @ViewInject(id = R.id.btn_continue_two, click = "onClick") private Button mBtnContinueTwo; @ViewInject(id = R.id.btn_flash, click = "onClick") private Button mBtnFlash; @ViewInject(id = R.id.btn_shake, click = "onClick") private Button mBtnShake; @ViewInject(id = R.id.btn_switch, click = "onClick") private Button mBtnSwitch; @ViewInject(id = R.id.btn_layout, click = "onClick") private Button mBtnLayout; @ViewInject(id = R.id.btn_frame, click = "onClick") private Button mBtnFrame; @ViewInject(id = R.id.btn_shake, click = "onClick") private Button mBntShake; @ViewInject(id = R.id.iv_image) private ImageView mIvImage; private Animation mAnim; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View v) { switch (v.getId()) { // 缩放 case R.id.btn_scale_anim: mAnim = AnimationUtils.loadAnimation(this, R.anim.scale); mIvImage.startAnimation(mAnim); break; // 透明度 case R.id.btn_alpha_anim: mAnim = AnimationUtils.loadAnimation(this, R.anim.alpha); mIvImage.startAnimation(mAnim); break; // 平移 case R.id.btn_translate_anim: mAnim = AnimationUtils.loadAnimation(this, R.anim.translate); mIvImage.startAnimation(mAnim); break; // 旋转 case R.id.btn_rotate_anim: mAnim = AnimationUtils.loadAnimation(this, R.anim.rotate); mIvImage.startAnimation(mAnim); break; // 组合动画,用监听器的方式 case R.id.btn_continue_one: mAnim = AnimationUtils.loadAnimation(this, R.anim.translate); mIvImage.startAnimation(mAnim); final Animation tAnim = AnimationUtils.loadAnimation(this, R.anim.rotate); mAnim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mIvImage.startAnimation(tAnim); } }); break; // 组合动画,用xml文件的方式 case R.id.btn_continue_two: mAnim = AnimationUtils.loadAnimation(this, R.anim.continue_two); mIvImage.startAnimation(mAnim); break; // 闪动效果 case R.id.btn_flash: AlphaAnimation alphaAnim = new AlphaAnimation(0.1f, 1.0f); alphaAnim.setDuration(100); alphaAnim.setRepeatCount(10); alphaAnim.setRepeatMode(Animation.REVERSE); mIvImage.startAnimation(alphaAnim); break; // 两个activity跳转的动画效果 case R.id.btn_switch: startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.aty_in, R.anim.aty_out); break; // 布局动画 case R.id.btn_layout: startActivity(new Intent(this, ListActivity.class)); break; // 帧动画 case R.id.btn_frame: // 怎么控制帧动画的重复次数 mIvImage.setImageResource(R.drawable.anim_list); AnimationDrawable animDrawable = (AnimationDrawable) mIvImage.getDrawable(); animDrawable.start(); break; case R.id.btn_shake: TranslateAnimation translateAnim = new TranslateAnimation(-10, 10, -10, 10); translateAnim.setDuration(30); translateAnim.setRepeatCount(10); translateAnim.setRepeatMode(Animation.REVERSE); mIvImage.startAnimation(translateAnim); break; } } } ```
proguard混淆后maven打出来的jar包java.lang.VerifyError
mavenProject,今天混淆之后mvn deploy的jar包启动报错: ``` Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 55 Exception Details: Location: sophia/foundation/property/symbol/JavaPropertySymbol.<init>(Ljava/lang/Short;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V @44: ifeq Reason: Expected stackmap frame at this location. Bytecode: 0000000: 2ab7 002e 2a2b b500 282a 2cb5 0029 2a2d 0000010: b500 2a2a 1904 b500 2b2a 1905 b500 2c2a 0000020: 1906 b500 2d12 0b19 06b6 002f 9900 0b2a 0000030: b200 20b5 0027 b112 0819 06b6 002f 9900 0000040: 0b2a b200 26b5 0027 b112 0919 06b6 002f 0000050: 9900 0b2a b200 24b5 0027 b112 0a19 06b6 0000060: 002f 9900 0b2a b200 25b5 0027 b112 0619 0000070: 06b6 002f 9900 0b2a b200 23b5 0027 b112 0000080: 0719 06b6 002f 9900 0b2a b200 22b5 0027 0000090: b112 0219 06b6 002f 9a00 0d12 0319 06b6 00000a0: 002f 9900 0b2a b200 21b5 0027 b112 0d19 00000b0: 06b6 002f 9900 0a2a 1218 b500 27b1 1201 00000c0: 1906 b600 2f99 000a 2a12 0eb5 0027 b112 00000d0: 0419 06b6 002f 9900 0a2a 1219 b500 27b1 00000e0: 120c 1906 b600 2f99 000a 2a12 1ab5 0027 00000f0: b112 0519 06b6 002f 9900 092a 121b b500 0000100: 27b1 ``` pom文件配置: ``` <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.7</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <target>1.7</target> <source>1.7</source> <encoding>UTF-8</encoding> <proguardInclude>${basedir}/proguard.conf</proguardInclude> <!--不压缩,不优化,保留jar包directory entry,保留注解 --> <options> <option>-ignorewarnings</option> <option>-dontshrink</option> <option>-dontoptimize</option> <option>-dontskipnonpubliclibraryclasses</option> <option>-dontskipnonpubliclibraryclassmembers</option> </options> <libs> <lib>${java.home}/lib/rt.jar</lib> </libs> </configuration> <dependencies> <!-- 使用4.9版本来混淆 --> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard-base</artifactId> <version>4.9</version> <scope>runtime</scope> </dependency> </dependencies> </plugin> </plugins> ```
proguard只对方法体进行混淆应该怎么配置,不混淆成员变量,类名,注解,方法名,实体,枚举。仅混淆方法体的内容。
proguard只对方法体进行混淆应该怎么配置,不混淆成员变量,类名,注解,方法名,实体,枚举。仅混淆方法体的内容。下面是我的配置,求大神指导。![图片说明](https://img-ask.csdn.net/upload/201909/20/1568947932_171831.png) ![图片说明](https://img-ask.csdn.net/upload/201909/20/1568948033_613625.png)![图片说明](https://img-ask.csdn.net/upload/201909/20/1568948101_676195.png)
proguard-rules可以制定哪些混淆而不是哪些不混淆吗?或者不行的原因是什么
proguard-rules可以制定哪些混淆而不是哪些不混淆吗?或者不行的原因是什么
android studio proguard 混淆微信libammsdk.jar报错
Error:Execution failed for task ':app:proguardRelease'. > java.io.IOException: Can't read [D:\android_studio\app\libs\libammsdk.jar(;;;;;;!META-INF/MANIFEST.MF)] (Can't process class [com/tencent/wxop/stat/al.class] (Unknown verification type [95] in stack map frame)) 怎么解决啊?在eclipse中解决了。但是同样的方法在android studio中不起作用
android proguard混淆jar包 如何确保List中参数不被混淆
@Override public void onPickPhotoSuccess(List<String> getImageList, int requestCode) { } 混淆后变成了 public void onPickPhotoSuccess(List paramList, int paramInt) { } 导致外部不能调用 如何保留List<String> 我用 -keep public class com.xx.xx.xx { void onPickPhotoSuccess(java.util.List,int); } 没有作用
proguard配置问题,求解析
# 通过指定数量的优化能执行 -optimizationpasses 5 # 混淆时不会产生形形色色的类名 -dontusemixedcaseclassnames # 指定不去忽略非公共的库类 -dontskipnonpubliclibraryclasses # 不预校验 -dontpreverify # 优化选项 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #-------------------------- # 保护类型 -keepattributes 说明 # Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, # LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, # RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault # -------------------- -keepattributes ** -libraryjars <java.home>/lib/rt.jar #第三方类库 -dontwarn android.** -keep class android.** {*;} -dontwarn com.baidu.** -keep class com.baidu.** {*;} -dontwarn com.tencent.** -keep class com.tencent.** {*;} -dontwarn com.lidroid.** -keep class com.lidroid.** {*;} -dontwarn com.sina.** -keep class com.sina.** {*;} -dontwarn com.weibo.** -keep class com.weibo.** {*;} -dontwarn com.baidu.mapapi.** -keep class com.baidu.mapapi.** {*;} -dontwarn android.webkit.** -keep class android.webkit.**{*;} -dontwarn android.net.http.** -keep class android.net.http.** { *;} -libraryjars libs/android-support-v4.jar -dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -keep interface android.support.v4.app.** { *; } # 删除Log代码 -assumenosideeffects class android.util.Log { public static *** v(...); public static *** i(...); public static *** d(...); public static *** w(...); public static *** e(...); } com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1 at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:825) at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:274) at com.android.ide.eclipse.adt.internal.project.ExportHelper$2.run(ExportHelper.java:373) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) java.lang.IllegalStateException: Could not remove /projectName/bin/res/crunch/drawable-hdpi/ic_launcher.png at org.tigris.subversion.subclipse.core.resourcesListeners.RevertResourceManager$RevertWorkspaceJob.revertResources(RevertResourceManager.java:65) at org.tigris.subversion.subclipse.core.resourcesListeners.RevertResourceManager$RevertWorkspaceJob.runInWorkspace(RevertResourceManager.java:85) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) [小黑oschina博客](http://www.oschina.net/question/1376052_245779 "")
维护很久前的项目 莫名其妙的导入design
前几天维护一个很久前的项目,想转到安卓x,结果对jar包升级的时候有一个design一直存在,并且报错把jar包转移到新项目中也不会出现这个design 下面贴图![图片说明](https://img-ask.csdn.net/upload/201912/07/1575657133_874940.jpg) apply plugin: 'com.android.application' apply plugin: "findbugs" /*apply from: 'tinker-support.gradle' apply plugin: 'packer'*/ task findbugs(type: FindBugs, dependsOn: 'assembleDebug') { ignoreFailures = true effort = "default" reportLevel = "high" println("$project.buildDir") classes = files("$project.buildDir/intermediates/classes") source = fileTree("src/main/java/") classpath = files() reports { xml.enabled = false html.enabled = true xml { destination file ("$project.buildDir/findbugs.xml") } html { destination file("$project.buildDir/findbugs.html") } } } android { lintOptions { checkReleaseBuilds false abortOnError false } compileSdkVersion 29 buildToolsVersion "29.0.2" sourceSets { main { jniLibs.srcDir 'libs' } // Move the tests to tests/java, tests/res, etc... //instrumentTest.setRoot('tests') // Move the build types to build-types/<type> // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... // This moves them out of them default location under src/<type>/... which would // conflict with src/ being used by the main source set. // Adding new build types or product flavors should be accompanied // by a similar customization. debug.setRoot('build-types/debug') release.setRoot('build-types/release') } defaultConfig { applicationId "com.goodlive.flying" minSdkVersion 21 targetSdkVersion 29 versionCode 20180228 versionName "1.5.9" //versionName "1.5.2"正式版 // Enabling multidex support. multiDexEnabled true ndk { // 设置支持的SO库架构 abiFilters 'armeabi' , 'x86'//, 'armeabi-v7a', 'x86_64', 'arm64-v8a' } } dexOptions { javaMaxHeapSize "4g" } signingConfigs { release { storeFile file('.jks') storePassword "" keyAlias "" keyPassword "" // 满足下面两个条件时需要此配置 // 1. Gradle版本 >= 2.14.1 // 2. Android Gradle Plugin 版本 >= 2.2.0 // 作用是只使用旧版签名,禁用V2版签名模式 v2SigningEnabled false } debug { storeFile file('.jks') storePassword "" keyAlias "" keyPassword "" } } buildTypes { release { //启用混淆配置 //Zip代码压缩优化 // zipAlignEnabled true //移除无用资源 // shrinkResources true // debuggable true //加载默认混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { //启用混淆配置 minifyEnabled false //Zip代码压缩优化 // zipAlignEnabled true //移除无用资源 // shrinkResources true //debugs使用release签名 //加载默认混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(path: ':PushSDK') implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' // implementation files('libs/SocialSDK_WeiXin_Full.jar') //dagger2 implementation 'com.qianwen:update-app:3.3.3' implementation 'com.lzy.net:okgo:3.0.4' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.cardview:cardview:1.0.0' implementation ('com.google.android.material:material:1.0.0'){ exclude group: 'com.android.support' } implementation ('com.jakewharton:butterknife:8.1.0'){ exclude group: 'com.android.support' } implementation 'com.android.support:multidex:1.0.3' implementation 'com.mcxiaoke.gradle:packer-helper:1.0.9' implementation ('com.github.bumptech.glide:glide:4.0.0-RC0'){ exclude group: 'com.android.support' } implementation 'com.tencent.bugly:crashreport_upgrade:1.4.2' //w implementation ('com.github.lygttpod:SuperTextView:1.0.7'){ exclude group: 'com.android.support' } implementation 'com.orhanobut:logger:1.15' //w implementation ('com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.13'){ exclude group: 'com.android.support' } implementation 'com.blankj:utilcode:1.3.1' implementation 'cn.finalteam:galleryfinal:1.4.8.7' implementation 'com.google.code.gson:gson:2.8.2' implementation 'org.greenrobot:eventbus:3.0.0' implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.roughike:bottom-bar:2.0.2' implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1' implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1' implementation 'io.reactivex:rxandroid:1.2.1' implementation 'io.reactivex:rxjava:1.2.1' implementation 'com.squareup.retrofit2:retrofit:2.1.0' implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0' implementation 'com.squareup.retrofit2:converter-gson:2.1.0' implementation 'com.trello:rxlifecycle-components:0.6.1' implementation 'com.jakewharton.rxbinding:rxbinding:0.4.0' implementation 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.3.0' implementation 'com.jakewharton.rxbinding:rxbinding-design:0.3.0' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0' implementation 'com.lsjwzh:materialloadingprogressbar:0.5.8-RELEASE' implementation 'me.shaohui.advancedluban:library:1.3.3' implementation 'com.dinuscxj:recycleritemdecoration:1.0.0' implementation 'com.umeng.analytics:analytics:6.1.4' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.zhy:flowlayout-lib:1.0.3' implementation 'com.afollestad.material-dialogs:core:0.9.4.5' implementation 'com.google.dagger:dagger:2.11-rc2' implementation 'se.emilsjolander:stickylistheaders:2.7.0' testImplementation 'junit:junit:4.12' implementation 'com.bigkoo:quicksidebar:1.0.3' annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.11-rc2' implementation 'com.github.razerdp:BasePopup:1.9.1' implementation 'com.makeramen:roundedimageview:2.3.0' implementation("com.github.hotchemi:permissionsdispatcher:3.1.0") { // if you don't use android.app.Fragment you can exclude support for them exclude module: "support-v13" } annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.1.0" } ``` 求助大神啊 ```
android 带有第三方类库的工程如何混淆编译 proguard-project.txt文件的
困扰了许久 不引用第三方类库或者包的会混淆编译 但是如果有第三方类库或者包导出apk时就会报错 网上搜索好像是要屏蔽对第三方类库和包的混淆 搜索结果如下 #(声明lib文件)-libraryjars **.jar #(不提示警告)-dontwarn com.xx.bbb.** #(不进行混淆)-keep class com.xx.bbb.** { *;} 可是第三方类库的jar包名和 工程名都是什么我不知道 求高手解答 万分感谢
android proguard混淆时,不出错,但是网络请求加载的数据不出来,我用的是volley
我反编译代码看是请求的方法被拆分成了好几个类,可能是这个问题么?但是不知道怎么解决![图片说明](https://img-ask.csdn.net/upload/201604/20/1461122522_157306.png),感激不尽
android studio 混淆打包时报错,找不到解决方案求帮助啊
混淆打包,报错,百度也查不到,困扰1天了。。。 Error:ProGuard: [JinFu1.1] java.io.IOException: Can't read [C:\Users\admin\.AndroidStudio1.2\system\compile-server\_temp_\proguard_input0.jar] (Can't process class [cn/sharesdk/onekeyshare/CustomerLogo.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))) Error:ProGuard: [JinFu1.1] at proguard.InputReader.readInput(InputReader.java:230) Error:ProGuard: [JinFu1.1] at proguard.InputReader.readInput(InputReader.java:200) Error:ProGuard: [JinFu1.1] at proguard.InputReader.readInput(InputReader.java:178) Error:ProGuard: [JinFu1.1] at proguard.InputReader.execute(InputReader.java:78) Error:ProGuard: [JinFu1.1] at proguard.ProGuard.readInput(ProGuard.java:196) Error:ProGuard: [JinFu1.1] at proguard.ProGuard.execute(ProGuard.java:78) Error:ProGuard: [JinFu1.1] at proguard.ProGuard.main(ProGuard.java:492) Error:ProGuard: [JinFu1.1] Caused by: java.io.IOException: Can't process class [cn/sharesdk/onekeyshare/CustomerLogo.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)) Error:ProGuard: [JinFu1.1] at proguard.io.ClassReader.read(ClassReader.java:112) Error:ProGuard: [JinFu1.1] at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) Error:ProGuard: [JinFu1.1] at proguard.io.JarReader.read(JarReader.java:65) Error:ProGuard: [JinFu1.1] at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65) Error:ProGuard: [JinFu1.1] at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53) Error:ProGuard: [JinFu1.1] at proguard.InputReader.readInput(InputReader.java:226) Error:ProGuard: [JinFu1.1] ... 6 more Error:ProGuard: [JinFu1.1] Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [52.0] (maximum 51.0, Java 1.7) Error:ProGuard: [JinFu1.1] at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java:140) Error:ProGuard: [JinFu1.1] at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:88) Error:ProGuard: [JinFu1.1] at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) Error:ProGuard: [JinFu1.1] at proguard.io.ClassReader.read(ClassReader.java:91) Error:ProGuard: [JinFu1.1] ... 11 more
apk混淆问题,混淆安装后无法运行
我的项目版本是2.3.3的,按照谷歌官方的要求,2.3版本以后混淆apk的话需使用proguard-project.txt和project.properties两个文件,在project.properties文件中只需将proguard.config那行取消注释即可,我按照这样做了,但是混淆以后的apk安装到手机上,点击应用程序图标没反应,一直不运行,请问这是为什么?
proguard+retrofit2.4+adapter-rxjava2-2.4.0+rxjava2+rxandroid2
目前在做android的代码混淆,没有混淆之前,代码运行正常,当打开混淆之后,代码运行时出现如下差错: ``` 03-13 10:39:59.936 6285 6285 E AndroidRuntime: java.lang.IllegalArgumentException: Unable to create call adapter for class io.reactivex.b 03-13 10:39:59.936 6285 6285 E AndroidRuntime: for method RequestApis.getCameraInfo 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.ServiceMethod$Builder.methodError() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.ServiceMethod$Builder.createCallAdapter() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.ServiceMethod$Builder.build() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.Retrofit.loadServiceMethod() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.Retrofit$1.invoke() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at java.lang.reflect.Proxy.invoke(Proxy.java:393) 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at $Proxy0.getCameraInfo(Unknown Source) 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at com.xxx.helper.RetrofitHelper.getCameraInfo() ...... 03-13 10:39:59.936 6285 6285 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Flowable return type must be parameterized as Flowable<Foo> or Flowable<? extends Foo> 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory.get() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.Retrofit.nextCallAdapter() 03-13 10:39:59.936 6285 6285 E AndroidRuntime: at retrofit2.Retrofit.callAdapter() ``` ``` 其中proguard配置: # Retrofit -dontwarn retrofit2.** -dontwarn org.codehaus.mojo.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions -keepattributes *Annotation* # Platform calls Class.forName on types which do not exist on Android to determine platform. -dontnote retrofit2.Platform # Platform used when running on RoboVM on iOS. Will not be used at runtime. -dontnote retrofit2.Platform$IOS$MainThreadExecutor # Platform used when running on Java 8 VMs. Will not be used at runtime. -dontwarn retrofit2.Platform$Java8 # Retain generic type information for use by reflection by converters and adapters. -keepattributes Signature # Retain declared checked exceptions for use by a Proxy instance. -keepattributes Exceptions -dontwarn retrofit2.adapter.rxjava.CompletableHelper$** # https://github.com/square/retrofit/issues/2034 #To use Single instead of Observable in Retrofit interface -keepnames class rx.Single #Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and # EnclosingMethod is required to use InnerClasses. -keepattributes Signature, InnerClasses, EnclosingMethod # Retain service method parameters when optimizing. -keepclassmembers,allowobfuscation interface * { @retrofit2.http.* <methods>; } -keepattributes RuntimeVisibleAnnotations -keepattributes RuntimeInvisibleAnnotations -keepattributes RuntimeVisibleParameterAnnotations -keepattributes RuntimeInvisibleParameterAnnotations -keepattributes EnclosingMethod -keepclasseswithmembers interface * { @retrofit2.* <methods>; } -keepclasseswithmembers class * { @retrofit2.http.* <methods>; } # OkHttp3 -keepattributes Signature -keepattributes *Annotation* -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -dontwarn okhttp3.** #OkHttp -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -dontwarn com.squareup.okhttp.** -dontwarn okio.** ``` jar版本: adapter-rxjava2-2.4.0.jar retrofit-2.4.0.jar reactive-streams-1.0.2.jar rxjava-2.1.14.jar rxandroid-2.0.2.aar 有哪位大神帮忙看下,如何解决?
android如何混淆带有.so库文件
网上看了很多代码混淆的方案,但是无论哪个方法都无法把.so文件里面的代码给混淆掉,不知道是哪里没做还是本身gcc编译出来的.so文件就是无法混淆的。求大牛解答。项目是由cocos2d-x写的,现在想在安卓版中混淆掉这些代码
android studio 混淆后,打包报错!!!
`` > Exception while processing task java.io.IOException: The same input jar [E:\Work\gv\app\libs\open_sdk_r5509.jar] is specified twice. > at proguard.ConfigurationChecker.checkConflicts(ConfigurationChecker.java:216) > at proguard.ConfigurationChecker.check(ConfigurationChecker.java:83) > at proguard.ProGuard.execute(ProGuard.java:73) > at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) > at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139) at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115) > at com.android.builder.tasks.Job.runTask(Job.java:48) > at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41) > at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227) > at java.lang.Thread.run(Thread.java:745) > :app:dexAnzhiRelease UP-TO-DATE > :app:validateReleaseSigning > :app:packageAnzhiRelease FAILED > FAILURE: Build failed with an exception. > * What went wrong: > Execution failed for task ':app:packageAnzhiRelease'. > Unable to compute hash of E:\Work\gv\app\build\intermediates\classes-proguard\anzhi\release\classes.jar * Try: > Run with --stacktrace option to get the stack trace. Run with --info or --debug > option to get more log output. > BUILD FAILED > Total time: 18.962 secs ` > ``` 请大神指导,小弟在线求。刚才在网上学习了混淆技巧,把混淆模板复制过去,然后打包报错。
android 混淆报错 请看图片
# To enable ProGuard in your project, edit project.properties # to define the proguard.config property as described in that file. # # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in ${sdk.dir}/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the ProGuard # include property in project.properties. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} #代码混淆压缩比例 -optimizationpasses 5 #混淆时不使用大小写混合,混淆后的类名为小写 -dontusemixedcaseclassnames #指定不去忽虑非公共的库的类 -dontskipnonpubliclibraryclasses #指定不去忽虑非公共的库的类的成员 -dontskipnonpubliclibraryclassmembers #不做预校验,preverify是proguard的四个步骤之一 #Android不需要preverify,去掉这一步可加快混淆速度 -dontpreverify #有了verbose这句话,混淆后就会产生映射文件 #包含有类名 -> 混淆后类名的映射关系 -verbose -printmapping priguardMapping.txt #指定混淆时采用的算法,后面的参数是一个过滤器 #这个过滤器是谷歌推荐的算法,一般不改变 -optimizations !code/simplification/artithmetic,!field/*,!class/merging/* #保护代码中的Annotation不被混淆 #这在JSON实体映射时非常重要,比如fastJson -keepattributes *Annotation* #避免混淆泛型 #这在JSON实体映射时非常重要,比如fastJson -keepattributes Signature #抛出异常时保留代码行号 -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,EnclosingMethod #保留所有的本地native方法不被混淆 -keepclasseswithmembernames class * { native <methods>; } #保留了继承Activity,Application这些类的子类 # 比如第一行就保证了所有Activity的子类不要被混淆 -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class * extends android.view.View -keep public class com.android.vending.licensing.ILicensingService #保留Activity中的方法参数是view的方法 #从而是我在layout里面编写onClick就不会被影响 -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } #枚举类不被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # 保留自定义控件(继承自View)不能被混淆 -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(***); *** get* (); } # 保留Parcelable序列化的类不能被混淆 -keep class * implements android.os.Parcelable{ public static final android.os.Parcelable$Creator *; } # 保留Serializable 序列化的类不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # 对R文件下的所有类及其方法,都不能被混淆 -keepclassmembers class **.R$* { *; } # 对于带有回调函数onXXEvent的,不能混淆 -keepclassmembers class * { void *(**On*Event); } #实体类不参与混淆全部忽略 -keep class com.lefu.puhui.bases.newwork.reqmodel.** {*; } -keep class com.lefu.puhui.bases.newwork.respmodel.** { *; } -keep class com.lefu.puhui.bases.update.entity.Channel { *; } -keep class com.lefu.puhui.bases.UserInfo {*;} -keep class com.lefu.puhui.bases.GladlyStuLoan {*;} -keep class com.lefu.puhui.bases.utils.CiphersUtil {*;} -keep class com.lefu.puhui.bases.utils.SignMd5Util {*;} -keep class com.lefu.puhui.bases.utils.MyToast {*;} -keep class com.lefu.puhui.bases.utils.GenerateDeviceUniqueID {*;} -keep class com.lefu.puhui.bases.utils.DataCleanManager {*;} -keep class com.lefu.puhui.bases.utils.ViewHolder {*;} -keep class com.lefu.puhui.models.home.network.reqmodel.** { *; } -keep class com.lefu.puhui.models.home.network.respmodel.** { *; } -keep class com.lefu.puhui.models.main.network.reqmodel.** { *; } -keep class com.lefu.puhui.models.main.network.respmodel.** { *; } -keep class com.lefu.puhui.models.makemoney.network.reqmodel.** { *; } -keep class com.lefu.puhui.models.makemoney.network.respmodel.** { *; } -keep class com.lefu.puhui.models.more.network.reqmodel.** { *; } -keep class com.lefu.puhui.models.more.network.respmodel.** { *; } -keep class com.lefu.puhui.models.personalcenter.network.reqmodel.** { *; } -keep class com.lefu.puhui.models.personalcenter.network.respmodel.** { *; } #BaseFramework -keep class com.bfec.BaseFramework.libraries.common.model.AccessResult {*;} -keep class * extends com.bfec.BaseFramework.libraries.common.model.AccessResult {*;} -keep class com.bfec.BaseFramework.libraries.common.model.RequestModel {*;} -keep class * extends com.bfec.BaseFramework.libraries.common.model.RequestModel {*;} -keep class com.bfec.BaseFramework.libraries.common.model.ResponseModel {*;} -keep class * extends com.bfec.BaseFramework.libraries.common.model.ResponseModel {*;} # AMap_Location_V2.4.0 -libraryjars libs/AMap_Location_V2.4.0_20160308.jar -keep class com.amap.** {*;} -keep class com.autonavi.** {*;} -keep class com.loc.** {*;} -dontwarn com.amap.** -dontwarn com.autonavi.** -dontwarn com.loc.** #android-support-v4 -libraryjars ../BaseFramework/libs/android-support-v4.jar -keep class android.support.v4.** {*;} -keep interface android.support.v4.** {*;} -keep public class * extends android.support.v4.** {*;} -dontwarn android.support.v4.** -dontwarn android.support.annotaion.** #bugly_crash_release__2.1.5 -libraryjars libs/bugly_crash_release__2.1.5.jar -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} #butterknife -libraryjars libs/ButterKnife_v7.0.1.jar -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } #commons-codec-1.10 -libraryjars libs/commons-codec-1.10.jar -keep class org.apache.** { *; } #CommonUtil-1.0.8 -libraryjars libs/CommonUtil-1.0.8.jar -keep class com.pay.** { *; } -dontwarn com.pay.** #jpush-android-2.1.3 -libraryjars libs/jpush-android-2.1.3.jar -dontoptimize -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -dontwarn com.google.** -keep class com.google.gson.** {*;} -dontwarn com.google.** -keep class com.google.protobuf.** {*;} #mta-sdk-1.6.2 -keep class com.tencent.** { *; } #pinyin4j -libraryjars libs/pinyin4j-2.5.0.jar -dontwarn net.soureceforge.pinyin4j.** -dontwarn demo.** -keep class net.sourceforge.pinyin4j.** { *;} -keep class demo.** { *;} #umeng -libraryjars libs/umeng_social_sdk.jar -dontwarn com.umeng.** -keep class com.umeng*.** {*; } #niversal-image-loader -libraryjars libs/Universal_Image_Loader_v1.9.4.jar -keep class com.nostra13.universalimageloader.** {*;} -dontwarn com.nostra13.universalimageloader.** #微博报下所有类及类里面的内容都不要混淆 -keep class com.sina.weibo.sdk.** { *; } # Gson -libraryjars ../BaseFramework/libs/gson.jar -keep class sun.misc.Unsafe {*;} -keep class com.google.gson.** {*;} -keep interface com.google.gson.** {*;} -dontwarn com.google.gson.** #httpmime -libraryjars ../WelabSDK/libs/httpmime-4.1.1.jar -keep class org.apache.http.** {*;} -dontwarn org.apache.http.** #LitePal -libraryjars ../BaseFramework/libs/litepal.jar -dontwarn org.litepal.* -keep class org.litepal.** { *; } -keep enum org.litepal.** -keep interface org.litepal.** { *; } -keep public class * extends org.litepal.** -keepclassmembers class * extends org.litepal.crud.DataSupport{ *; } #pulltorefresh -libraryjars ../Library -dontwarn com.handmark.pulltorefresh.library.** -keep class com.handmark.pulltorefresh.library.** { *;} -dontwarn com.handmark.pulltorefresh.library.extras.** -keep class com.handmark.pulltorefresh.library.extras.** { *;} -dontwarn com.handmark.pulltorefresh.library.internal.** -keep class com.handmark.pulltorefresh.library.internal.** { *;} #fastjson -libraryjars ../WelabSDK/libs/fastjson-1.1.45.android.jar -keep class com.alibaba.fastjson.** { *; } -dontwarn com.alibaba.fastjson.** #org.apache.http.legacy -libraryjars ../WelabSDK/libs/org.apache.http.legacy.jar -keep class android.net.compatibility.** {*;} -keep class android.net.http.** {*;} -keep class com.android.internal.http.multipart.** {*;} -keep class org.apache.** {*;} -dontwarn android.net.** -dontwarn org.apache.http.** #PersonalSocialReportSDK -libraryjars ../WelabSDK/libs/PersonalSocialReportSDK.jar -dontwarn info.kuaicha.** #jna-min -libraryjars ../WelabFaceCheck/libs/jna-min.jar -dontwarn com.sun.** -keep class com.sun.jna.Native -ignorewarnings ![图片说明](https://img-ask.csdn.net/upload/201606/16/1466066181_83691.png)
混淆代码问题,反编译
我proguard-rules加的混淆代码: ``` -optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep public class * extends android.app.Application # 保持哪些类不被混淆 -keep public class * extends android.app.Service # 保持哪些类不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些类不被混淆 -keep public class * extends android.content.ContentProvider # 保持哪些类不被混淆 -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些类不被混淆 -keep public class * extends android.preference.Preference # 保持哪些类不被混淆 -keep public class com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆 -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } #Jpush -dontoptimize -dontpreverify -dontwarn cn.jpush.** -keep class cn.jpush.** { *;} #==================gson========================== -dontwarn com.google.** -keep class com.google.gson.** {*;} #==================protobuf====================== -dontwarn com.google.** -keep class com.google.protobuf.** {*;} ``` build.gradle ``` buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } ``` 然后APK能导出,也能安装运行,但是我去反编译APK,显示的是 ![图片说明](https://img-ask.csdn.net/upload/201602/23/1456215826_300270.png) ![图片说明](https://img-ask.csdn.net/upload/201602/23/1456215838_121583.png) 而不是别人那种aa,bb,c用字母表示的类和变量什么的,我就不清楚我的是不是正确的,还是没设置好 ![图片说明](https://img-ask.csdn.net/upload/201602/23/1456215875_240126.png)
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问