Android打包另类问题

145 阅读1分钟

今天遇到的问题,内容来源于网络,记录一下。

运行之后产生的包发给别人安装不了

outputs中

解决方案

  • 在gradle.properties添加android.injected.textOnly=false即可

原理

  • AS Run 出来的 Apk,之所以无法安装,是因为其携带了 FLAG_TEXT_ONLY 这个 Flag,它会阻止我们使用正常的方式安装。想要安装,可以通过 adb install -t来解决。 虽然这个Flag 初始于 API Level 4,但是它在 AS 3.0中,才被默认加入。想要去掉可以通过增加android.injected.textOnly=false 来实现。

正式包和测试包由于包名相同不能同时安装到同一个手机上

  • 正式包的环境和测试包的环境是不一样的,有的时候正式包和测试包都会出现问题,这个时候,来回安装太浪费时间了

解决方案

  • 在 app下的build.gradle 的 android➡buildTypes➡debug 节点下面设置 applicationIdSuffix 即可
android {
    // ...
    
    buildTypes {
        debug {
            buildConfigField "String", "HOST", "\"http://IP:端口\""
            minifyEnabled false
            applicationIdSuffix ".test"         // 测试包增加包名后缀
        }
        release {
            // ...
            buildConfigField "String", "HOST", "\"http://IP:端口\""
        }
    }
    
    //...
}

原理

  • 就是修改了包名(applicationId)