我有旧项目和密钥库文件,但是当我尝试创建签名APK时,会出现以下错误。
[2013-05-19 12:36:02 - xxxxxxx] Proguard returned with error code 1. See console
[2013-05-19 12:36:02 - xxxxxxx] Unable to access jarfile /Users/muhammadali/Documents/development
[2013-05-19 12:36:12 - xxxxxx] Proguard returned with error code 1. See console
[2013-05-19 12:36:12 - xxxxxx] Unable to access jarfile /Users/muhammadali/Documents/development
请帮助我为什么无法生成APK文件。
答案 0 :(得分:1)
好吧,还有一些事情:
确保您的Proguard
版本为4.8
及更高版本。在4.7.
假设您正在运行最新版本的Proguard并且仍然存在,请转到[android-sdk-folder]/sdk/tools/proguard/bin/proguard.sh
并进行以下更改:
变化:
java -jar $PROGUARD_HOME/lib/proguard.jar "$@"
致:
java -jar "$PROGUARD_HOME/lib/proguard.jar" "$@"
将此行添加到应用程序文件夹中的project.properties
文件中。
proguard.config=proguard.cfg
在您的应用程序文件夹中创建一个proguard.cfg
文件。
使用以下内容填充proguard.cfg
文件(根据需要进行修改)。
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-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 <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);
public void onSearchButtonClicked(java.lang.String);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
关闭Project -> Build Automatically
转到菜单Project -> Clean...
并首先清理项目。
答案 1 :(得分:0)
如果您在命令shell中使用它,我认为这是最佳做法。
请参阅以下链接,其中包含您在eclipse或命令shell中执行所有必要步骤。
http://developer.android.com/tools/publishing/app-signing.html
首先你需要取消你的apk。
然后创建私钥
$ keytool -genkey -v -keystore my-release-key.keystore-alias alias_name -keyalg RSA -keysize 2048 -validity 10000
然后使用私钥
签署未签名的apk$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-releasekey.keystore my_application.apk alias_name
最后使用zip对齐,对齐你apk
$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
以上文档中详细说明了这些步骤。