工具问题——eclipse中安装Installation error: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION

遇到Android应用安装过程中出现 INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION 错误,通过排查升级历史和详细阅读日志,最终发现并修复问题。分享解决过程和相关技术细节。

        开博第一篇,以一个错误开始~~

        下午修改自己的小东西,突然报错,之前一会还是好好的,不知道动了什么东西,竟然出做了。错误信息如下:

控制台:

[2012-04-21 18:07:55 - SMSExport] Installation error: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
[2012-04-21 18:07:55 - SMSExport] Please check logcat output for more details.
[2012-04-21 18:07:55 - SMSExport] Launch canceled!
Logcat:
04-21 18:22:29.240: D/AndroidRuntime(18344): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
04-21 18:22:29.240: D/AndroidRuntime(18344): CheckJNI is OFF
04-21 18:22:29.245: D/dalvikvm(18344): creating instr width table
04-21 18:22:29.435: D/AndroidRuntime(18344): Calling main entry com.android.commands.pm.Pm
04-21 18:22:29.480: D/dalvikvm(2466): GC_EXPLICIT freed 4K, 49% free 2772K/5379K, external 1954K/2101K, paused 29ms
04-21 18:22:29.480: W/ActivityManager(143): No content provider found for: 
04-21 18:22:29.480: D/VoldCmdListener(113): asec list
04-21 18:22:29.490: I/PackageHelper(2466): Size of container 2 MB 275477 bytes
04-21 18:22:29.490: D/VoldCmdListener(113): asec create smdl2tmp1 2 fat {} 10038
04-21 18:22:29.490: E/VolumeManager(113): lookupVolume(smdl2tmp1)
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): /system/bin/newfs_msdos: warning, /dev/block/dm-3 is not a character device
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): /system/bin/newfs_msdos: Skipping mount checks
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): Bogus heads from kernel - setting sane value
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): Bogus sectors from kernel - setting sane value
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): /dev/block/dm-3: 3712 sectors in 232 FAT32 clusters (8192 bytes/cluster)
04-21 18:22:29.535: I//system/bin/newfs_msdos(113): bps=512 spc=16 res=494 nft=2 sec=4221 mid=0xf0 spt=63 hds=64 hid=0 bspf=2 rdcl=2 infs=1 bkbs=2
04-21 18:22:29.595: I/Vold(113): Filesystem formatted OK
04-21 18:22:29.600: D/VoldCmdListener(113): asec path smdl2tmp1
04-21 18:22:29.605: I/PackageHelper(2466): Created secure container smdl2tmp1 at /mnt/asec/smdl2tmp1
04-21 18:22:29.605: I/DefContainer(2466): Created container for smdl2tmp1 at path : /mnt/asec/smdl2tmp1
04-21 18:22:29.640: I/DefContainer(2466): Copied /data/local/tmp/SMSExport.apk to /mnt/asec/smdl2tmp1/pkg.apk
04-21 18:22:29.640: D/VoldCmdListener(113): asec finalize smdl2tmp1
04-21 18:22:29.650: I/DefContainer(2466): Finalized container smdl2tmp1
04-21 18:22:29.650: I/DefContainer(2466): Unmounting smdl2tmp1 at path /mnt/asec/smdl2tmp1
04-21 18:22:29.680: D/dalvikvm(2466): GC_EXPLICIT freed 22K, 49% free 2771K/5379K, external 1954K/2101K, paused 31ms
04-21 18:22:29.770: D/dalvikvm(143): GC_EXPLICIT freed 1018K, 52% free 6520K/13383K, external 7428K/7428K, paused 87ms
04-21 18:22:29.775: D/VoldCmdListener(113): asec unmount smdl2tmp1 force
04-21 18:22:29.780: W/ActivityManager(143): No content provider found for: 
04-21 18:22:29.790: D/VoldCmdListener(113): asec mount smdl2tmp1 {} 1000
04-21 18:22:29.865: D/VoldCmdListener(113): asec path smdl2tmp1
04-21 18:22:29.870: D/PackageParser(143): Scanning package: /mnt/asec/smdl2tmp1/pkg.apk
04-21 18:22:29.880: W/PackageParser(143): /mnt/asec/smdl2tmp1/pkg.apk
04-21 18:22:29.880: W/PackageParser(143): java.lang.UnsupportedOperationException: Can't convert to integer: type=0x3
04-21 18:22:29.880: W/PackageParser(143): at android.content.res.TypedArray.getInteger(TypedArray.java:367)
04-21 18:22:29.880: W/PackageParser(143): at android.content.pm.PackageParser.parsePackage(PackageParser.java:766)
04-21 18:22:29.880: W/PackageParser(143): at android.content.pm.PackageParser.parsePackage(PackageParser.java:421)
04-21 18:22:29.880: W/PackageParser(143): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:6043)
04-21 18:22:29.880: W/PackageParser(143): at com.android.server.PackageManagerService.access$2200(PackageManagerService.java:164)
04-21 18:22:29.880: W/PackageParser(143): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4787)
04-21 18:22:29.880: W/PackageParser(143): at android.os.Handler.handleCallback(Handler.java:587)
04-21 18:22:29.880: W/PackageParser(143): at android.os.Handler.dispatchMessage(Handler.java:92)
04-21 18:22:29.880: W/PackageParser(143): at android.os.Looper.loop(Looper.java:130)
04-21 18:22:29.880: W/PackageParser(143): at android.os.HandlerThread.run(HandlerThread.java:60)
04-21 18:22:29.880: I/PackageHelper(143): Forcibly destroying container smdl2tmp1
04-21 18:22:29.960: D/dalvikvm(143): GC_EXPLICIT freed 123K, 52% free 6444K/13383K, external 7428K/7428K, paused 80ms
04-21 18:22:29.965: D/VoldCmdListener(113): asec destroy smdl2tmp1 force
04-21 18:22:30.060: D/dalvikvm(143): GC_EXPLICIT freed 9K, 52% free 6442K/13383K, external 7428K/7428K, paused 79ms
04-21 18:22:30.090: D/AndroidRuntime(18344): Shutting down VM
04-21 18:22:30.100: D/dalvikvm(18344): GC_CONCURRENT freed 215K, 71% free 305K/1024K, external 0K/0K, paused 1ms+1ms
04-21 18:22:30.105: D/dalvikvm(18344): Debugger has detached; object registry had 1 entries
04-21 18:22:30.115: I/AndroidRuntime(18344): NOTE: attach of thread 'Binder Thread #3' failed


        logcat中信息没看懂,网上查找了一下,没有解决问题,静下心想想了想这段时间做了啥。

        1、刚做的系统在,正在升级,win7 sp1

        2、正在升级我的SDK,ADT也刚升级到18.0。不知道会不会是它的原因

        第一个可能不会,第二个有可能。遂重启了eclipse,运行错误依旧。打开另外一个项目,安装正常。应该是这个项目的问题。网上查另外一个哥们的错误是由于AndroidManifest.xml出错导致,想想自己改了哪些东西:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.whh.sms.export"
    android:versionCode="@string/versionCode"
    android:versionName="@string/versionName" >
</manifest>

把它改回去:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.whh.sms.export"
    android:versionCode="1"
    android:versionName="0.5.1" >
</manifest>

        错误消失,暂时不知道为什么不可以这么写。试了下: 

android:versionCode="1" 
android:versionName="@string/versionName" 


这样不会出错。待有时间研究下,同时希望高手指点。干活先~~


相关搜索:http://blog.youkuaiyun.com/harry_helei/article/details/6157428

### npm 全局安装默认安装到用户目录的问题 当使用 `npm install -g` 命令进行全局安装包时,如果系统目录(如 `/usr/local/lib/node_modules`)没有写入权限,npm 会默认将包安装到用户目录下(如 `/home/username/.npm-global/lib/node_modules`)。这种行为虽然可以避免权限问题,但可能导致全局安装的包无法被其他用户或系统范围内的应用访问[^1]。 #### 原因分析 1. **权限问题**:默认情况下,系统目录(如 `/usr/local/lib/node_modules`)可能对普通用户没有写入权限。因此,npm 会自动将全局安装路径切换到用户的本地目录。 2. **配置问题**:npm 的全局安装路径可以通过 `npm config set prefix` 命令进行配置。如果未正确配置,npm 可能会选择用户目录作为默认路径。 #### 解决方案 1. **检查当前全局安装路径** 使用以下命令查看当前的全局安装路径: ```bash npm config get prefix ``` 如果输出路径类似于 `/home/username/.npm-global`,则说明 npm 正在使用用户目录作为全局安装路径。 2. **更改全局安装路径** 为了将全局包安装到系统目录(如 `/usr/local`),可以执行以下命令: ```bash mkdir -p /usr/local/lib/node_modules npm config set prefix '/usr/local' ``` 确保 `/usr/local/lib/node_modules` 目录具有适当的写入权限。如果权限不足,可以使用 `sudo` 命令: ```bash sudo chown -R $(whoami) /usr/local/lib/node_modules ``` 3. **更新环境变量** 更改全局安装路径后,需要将新路径添加到系统的 `PATH` 环境变量中,以便能够在终端中直接访问全局安装的命令。可以在 `~/.bashrc` 或 `~/.zshrc` 文件中添加以下行: ```bash export PATH="/usr/local/bin:$PATH" ``` 然后运行以下命令使更改生效: ```bash source ~/.bashrc # 或者 source ~/.zshrc ``` 4. **验证全局安装路径** 安装一个全局包(如 `vite`)以验证更改是否生效: ```bash npm install -g vite ``` 检查全局包是否安装在 `/usr/local/lib/node_modules` 目录中: ```bash ls /usr/local/lib/node_modules ``` 5. **使用 `nvm` 管理 Node.js 版本** 如果使用 `nvm`(Node Version Manager),可以通过以下方式避免权限问题: - 安装 `nvm` 并选择一个 Node.js 版本: ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install node ``` - `nvm` 会自动将全局包安装到用户目录下的 `.nvm` 文件夹中,避免权限冲突。 #### 注意事项 - 在更改全局安装路径时,确保目标目录具有适当的权限,以避免再次出现权限问题。 - 如果系统上有多个用户需要访问全局安装的包,建议将全局安装路径设置为 `/usr/local`,并确保所有用户都有读取权限。 - 使用 `sudo` 命令时要小心,避免对系统文件造成不必要的修改。 #### 示例代码 以下是一个简单的脚本,用于检查并更改 npm 的全局安装路径: ```bash #!/bin/bash # 检查当前全局安装路径 echo "当前全局安装路径:" npm config get prefix # 创建系统目录并设置全局安装路径 sudo mkdir -p /usr/local/lib/node_modules npm config set prefix '/usr/local' # 更新环境变量 echo "更新 PATH 环境变量..." echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc # 验证更改 echo "安装 vite 以验证更改..." npm install -g vite echo "全局安装路径已更改并验证完成。" ``` #### 相关问题 1. 如何检查 npm 的全局安装路径? 2. 如何更改 npm 的全局安装路径到系统目录? 3. 为什么 npm 全局安装包时会默认安装到用户目录? 4. 如何解决 npm 全局安装时的权限问题? 5. 使用 `nvm` 管理 Node.js 版本时如何避免权限问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值