uni-app App打包失败 真机调试可以运行

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app App打包失败 真机调试可以运行

错误信息如下  

Appid: `UNI`95E9509  

FAILURE: Build failed with an exception.  

- What went wrong:
Execution failed for task `':app:processReleaseResources'`.  
> 
> A failure occurred while executing `com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction`  
> Android resource linking failed  
> ERROR: `[PackagePath]`/app/AndroidManifest.xml:8:5-18:16: AAPT: error: 'none' is incompatible with attribute windowSoftInputMode (attr) flags [adjustNothing=48, adjustPan=32, adjustResize=16, adjustUnspecified=0, stateAlwaysHidden=3, stateAlwaysVisible=5, stateHidden=2, stateUnchanged=1, stateUnspecified=0, stateVisible=4].  

ERROR: `[PackagePath]`/app/AndroidManifest.xml:19:5-625: AAPT: error: 'none' is incompatible with attribute windowSoftInputMode (attr) flags [adjustNothing=48, adjustPan=32, adjustResize=16, adjustUnspecified=0, stateAlwaysHidden=3, stateAlwaysVisible=5, stateHidden=2, stateUnchanged=1, stateUnspecified=0, stateVisible=4].  

- Try:  
> Run with `--debug` option to get more log output.  
> Run with `--scan` to get full insights.  
> Get more help at https://help.gradle.org.  

- Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task `':app:processReleaseResources'`.  
...
Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed  
ERROR: `[PackagePath]`/app/AndroidManifest.xml:8:5-18:16: AAPT: error: 'none' is incompatible with attribute windowSoftInputMode (attr) flags [adjustNothing=48, adjustPan=32, adjustResize=16, adjustUnspecified=0, stateAlwaysHidden=3, stateAlwaysVisible=5, stateHidden=2, stateUnchanged=1, stateUnspecified=0, stateVisible=4].  
...

1 回复

在面临uni-app打包失败但真机调试可以正常运行的问题时,通常意味着打包过程中存在某些配置或资源文件的问题。以下是一些可能的原因及其对应的代码或配置检查示例,帮助你定位和解决问题。

1. 检查manifest.json配置

确保manifest.json中的配置正确无误,特别是与打包相关的部分,如app-plus下的配置。

{
  "mp-weixin": { /* 微信小程序配置 */ },
  "app-plus": {
    "name": "你的应用名称",
    "version": {
      "name": "1.0.0",
      "code": "100"
    },
    "sdkConfigs": {},
    "distribute": {
      "android": {
        "package": "com.example.yourapp"
      },
      "ios": {
        "bundleIdentifier": "com.example.yourapp"
      }
    },
    // 其他配置...
  }
}

2. 检查资源文件路径

确保所有引用的资源文件(图片、字体等)路径正确,且文件存在于项目中。错误的路径或缺失的文件可能导致打包失败。

<!-- 在页面中引用图片 -->
<image src="/static/images/logo.png"></image>

3. 检查依赖库版本

确保package.json中依赖的库版本与uni-app兼容。有时候,库的新版本可能引入不兼容的更改。

{
  "dependencies": {
    "@dcloudio/uni-app": "^最新版本",
    "@dcloudio/types": "^最新版本",
    // 其他依赖...
  }
}

4. 条件编译

检查是否有使用条件编译,且条件编译的配置是否正确。条件编译错误也可能导致打包失败。

// #ifdef H5
console.log('This is for H5 platform');
// #endif

// #ifdef APP-PLUS
console.log('This is for App platform');
// #endif

5. 清理和重建项目

有时候,简单的清理和重建项目可以解决打包问题。可以尝试删除dist目录和node_modules目录,然后重新运行npm install和打包命令。

rm -rf dist node_modules
npm install
npx hbuilderx build --platform android --mode production

6. 查看日志输出

详细查看打包过程中的日志输出,寻找可能的错误信息或警告,这些信息通常能提供解决问题的线索。

通过上述步骤,你应该能够定位并解决uni-app打包失败的问题。如果问题依旧存在,建议检查uni-app的官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部