2
应用程序没有proguard的工作,即minifyEnabled false,但与proguard它崩溃。我已经添加了保持android.support.v4到我的proguard-rules.pro,所以我找不到我的代码的问题。nullPointerException在android.support.v4与保持android.support.v4 proguard
Proguard的规则
#Basic
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
-dontwarn android.support.v4.** { *; }
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-keepattributes *Annotation*
-useuniqueclassmembernames
-injars bin/classes
-injars libs
-outjars bin/classes-processed.jar
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-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.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*(...);
}
-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.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
#Get rid of logs
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
###############
# Butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
logcat的
11-06 15:08:59.643 5949-5956/? I/art: Debugger is no longer active
11-06 15:08:59.670 5949-5956/? W/art: Suspending all threads took: 26.870ms
11-06 15:09:00.092 5949-5949/? D/AndroidRuntime: Shutting down VM
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: FATAL EXCEPTION: main
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: Process: com.example, PID: 5949
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.NavigationActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.access$800(ActivityThread.java:151)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5257)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.example.InfoFragment.K(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.example.InfoFragment.L(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.example.InfoFragment.a(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.o.b(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.aa.a(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.aa.a(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.e.run(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.aa.e(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.w.o(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.support.v4.b.r.onStart(Unknown Source)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.Activity.performStart(Activity.java:6006)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.access$800(ActivityThread.java:151)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5257)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-06 15:09:00.101 5949-5949/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
11-06 15:14:00.243 5949-5949/? I/Process: Sending signal. PID: 5949 SIG: 9
没有proguard的:
Configuration on demand is an incubating feature.
WARNING [Project: :app] To shrink resources you must also enable ProGuard
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
:app:preDebugBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:processReleaseManifest UP-TO-DATE
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
:app:processReleaseJavaRes UP-TO-DATE
:app:compileReleaseJavaWithJavac UP-TO-DATE
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources UP-TO-DATE
:app:preDexRelease UP-TO-DATE
:app:dexRelease UP-TO-DATE
:app:validateReleaseSigning
:app:packageRelease UP-TO-DATE
:app:zipalignRelease UP-TO-DATE
:app:assembleRelease UP-TO-DATE
:app:installRelease
Installing APK 'app-release.apk' on 'Nexus_5_API_22(AVD) - 5.1'
Installed on 1 device.
BUILD SUCCESSFUL
Total time: 8.116 secs
12:22:37 PM: External task execution finished 'installRelease'.
该应用程序的gradle构建:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example"
minSdkVersion 15
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
signingConfigs {
release
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude '.readme'
}
productFlavors {
}
}
def Properties props = new Properties()
def propFile = new File('signing.properties')
if(propFile.canRead()){
props.load(new FileInputStream(propFile))
if(props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')){
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'signing.properties not found'
android.buildTypes.release.signingConfig = null
}
repositories{
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.google.code.gson:gson:2.3'
compile 'com.mcxiaoke.volley:library:1.0.19'
}
新摇篮控制台输出:
Configuration on demand is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
:app:preDebugBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:processReleaseManifest UP-TO-DATE
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
:app:processReleaseJavaRes UP-TO-DATE
:app:compileReleaseJavaWithJavac UP-TO-DATE
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources UP-TO-DATE
:app:proguardRelease
Exception while processing task
java.io.IOException: Can't read [D:directoryToApp\app\bin\classes] (No such file or directory)
at proguard.InputReader.readInput(InputReader.java:188)
at proguard.InputReader.readInput(InputReader.java:158)
at proguard.InputReader.readInput(InputReader.java:136)
at proguard.InputReader.execute(InputReader.java:66)
at proguard.ProGuard.readInput(ProGuard.java:218)
at proguard.ProGuard.execute(ProGuard.java:82)
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)
Caused by: java.io.IOException: No such file or directory
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:50)
at proguard.InputReader.readInput(InputReader.java:184)
... 12 more
:app:dexRelease UP-TO-DATE
:app:shrinkReleaseResources UP-TO-DATE
:app:validateReleaseSigning
:app:packageRelease UP-TO-DATE
:app:zipalignRelease UP-TO-DATE
:app:assembleRelease UP-TO-DATE
BUILD SUCCESSFUL
它运行良好,没有proguard的 – JonnyL
u能提供各地。安迪抛出NPE的屏幕? –
你是什么意思?抛出n的片段的代码? – JonnyL