2012-01-10 40 views
7

Tôi có thể cài đặt một debug xây dựng trên giả lập thực hiện:Android: Không thể cài đặt bản phát hành bản dựng lên trình giả lập; nhận Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]

ant debug install 

nhưng tôi không thể cài đặt một phiên bản build. bước của tôi:

1. ant release 
2. jarsigner -verbose -keystore ..\my-release-key.keystore bin\myapp-release-unsigned.apk mykey 
3. ren bin\myapp-release-unsigned.apk bin\myapp-release-signed.apk 
4. zipalign -v 4 myapp-release-signed.apk myapp-release.apk 
5. adb install bin\myapp-release.apk 

Tất cả các bước chạy thành công, ngoại trừ cuối cùng một trong những nơi tôi nhận được một tin nhắn:

82 KB/s (388012 bytes in 4.613s) 
     pkg: /data/local/tmp/myapp-release.apk 
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION] 

Tôi cũng đã cố gắng làm ant installr thay vì adb install bin\myapp-release.apk với kết quả tương tự

EDIT: Tôi nghĩ rằng điều này phải làm với khóa, vì đó là sự khác biệt duy nhất tôi có thể thấy giữa bản phát hành và bản sửa lỗi. Tôi đã tạo khóa bằng cách sử dụng:

keytool -genkey -v -keystore my-release-key.keystore 
-alias alias_name -keyalg RSA -keysize 2048 -validity 10000 

như đã đề cập trên http://developer.android.com/guide/publishing/app-signing.html. Tôi đã sửa đổi ant.properties tệp cho mỗi http://developer.android.com/guide/developing/building/building-cmdline.html và hiện chỉ cần thực hiện ant release install (thay vì các bước ở trên) nhưng vẫn gặp sự cố tương tự. Nếu ai đó biết cách kiến ​​tạo khóa gỡ lỗi, thì tôi có thể thực hiện theo quy trình tương tự để tạo khóa phát hành của tôi và xem có giải quyết được sự cố không.

+0

bạn đã gỡ cài đặt ứng dụng xây dựng gỡ lỗi của mình chưa? – nandeesh

+0

có Tôi đã gỡ cài đặt gỡ lỗi xây dựng – morpheus

+0

chỉ cần cài đặt apk chưa ký. –

Trả lời

5

Giải pháp: https://stackoverflow.com/a/8225017/147530
Ghi chú:
1. Tôi đã nhận được một INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION. Tôi đã không nhận được một INSTALL_PARSE_FAILED_NO_CERTIFICATES
2. Chạy adb logcat từ dòng cmd cho thấy stacktrace tương tự như trong Android signing with Ant:

W/PackageParser( 51): Exception reading /data/app/vmdl24231.tmp 
W/PackageParser( 51): java.lang.SecurityException: META-INF/METALLIC.SF has in 
valid digest for assets/myasset.xtx in /data/app/vmdl24231.tmp 
W/PackageParser( 51):   at java.util.jar.JarVerifier.verifyCertificate(J 
arVerifier.java:370) 
W/PackageParser( 51):   at java.util.jar.JarVerifier.readCertificates(Ja 
rVerifier.java:273) 
W/PackageParser( 51):   at java.util.jar.JarFile.getInputStream(JarFile. 
java:416) 
W/PackageParser( 51):   at android.content.pm.PackageParser.loadCertific 
ates(PackageParser.java:317) 
W/PackageParser( 51):   at android.content.pm.PackageParser.collectCerti 
ficates(PackageParser.java:479) 
W/PackageParser( 51):   at com.android.server.PackageManagerService.inst 
allPackageLI(PackageManagerService.java:4287) 
W/PackageParser( 51):   at com.android.server.PackageManagerService.acce 
ss$1600(PackageManagerService.java:109) 
W/PackageParser( 51):   at com.android.server.PackageManagerService$5.ru 
n(PackageManagerService.java:3779) 
W/PackageParser( 51):   at android.os.Handler.handleCallback(Handler.jav 
a:587) 
W/PackageParser( 51):   at android.os.Handler.dispatchMessage(Handler.ja 
va:92) 
W/PackageParser( 51):   at android.os.Looper.loop(Looper.java:123) 
W/PackageParser( 51):   at android.os.HandlerThread.run(HandlerThread.ja 
va:60) 

Tài liệu tham khảo:
http://code.google.com/p/android/issues/detail?id=19567

11

Tôi có vấn đề này cùng vì tôi đã sử dụng một chuỗi giá trị trong tệp AndroidManifest.xml của tôi như sau:

android:versionCode="@string/version_code" 
android:versionName="@string/version_name" 

Chuỗi ở đâu s.xml chứa:

<string name="version_code">3</string> 
<string name="version_name">1.0</string> 

versionCode phải là số nguyên. Khi tôi lấy ra rằng @string tham khảo tôi không còn nhận lỗi này và ứng dụng biên dịch và chạy tốt:

android:versionCode="3" 
android:versionName="1.0" 
+0

cảm ơn, nó hoạt động – xnagyg

+0

Bạn có thể lưu 'versionCode' làm số nguyên:' 3 'và tham chiếu là' @ integer/version_code' –

1

Tôi đã có những lỗi tương tự, nhưng khi tôi nhìn vào logcat khi cố gắng cài đặt các tập tin apk vào điện thoại, tôi đã nhìn thấy những dòng này:

11-10 11: 28: 26,971 20.075 20.085 D: Zip: EOCD không tìm thấy, /data/local/tmp/myapp.apk là không nén

11-10 11: 28: 26.972 20075 20085 W zipro: Lỗi khi mở lưu trữ /data/local/tmp/myapp.apk: tập tin không hợp lệ

ngày 11-ngày 10 tháng 11: tài sản 26,972 20.075 20.085 D:: 28 thất bại trong việc mở Zip lưu trữ '/ data/local/tmp/myapp.apk'

11-10 11: 28: 26,972 20.075 20.085 W DefContainer: Không thể phân tích cú pháp gói tại /data/local/tmp/myapp.apk: android.content.pm.PackageParser $ PackageParserException: Không thể phân tích /data/local/tmp/myapp.apk

Như đã đề cập trong another question, hóa ra các tập tin apk đã bị hỏng (có lẽ không tải một cách chính xác), vì vậy tôi đã phải tải về nó một lần nữa, sau đó nó làm việc khỏe.

Các vấn đề liên quan