【问题标题】:Set doNotStrip packagingOptions to a specific buildType将 doNotStrip packagingOptions 设置为特定的 buildType
【发布时间】:2019-03-29 01:38:20
【问题描述】:

我的项目有 3 种不同的 buildTypes,我只需要其中一种来保存其本机库的调试信息。我正在使用com.android.tools.build:gradle:3.1.4

我尝试了以下

buildTypes {

   debug {
   ...
   }

   release {
   ...
   }

   unstripped {
       ...
       packagingOptions {
           doNotStrip '**/*.so'
       } 
   }
}

但这使得所有 buildType 都保留未剥离的库版本。

我还尝试将doNotStrip 模式更改为'**/unstripped/*.so' 之类的模式,但这似乎对我没有帮助,因为docs 表示路径与APK 的根目录有关。

【问题讨论】:

  • 你有没有想过为什么这不起作用?
  • 又戳了几下,这似乎是一个 gradle 错误,或者至少是如何实现 packagingOptions 的问题。这些设置似乎是全局的,并不局限于特定的变体。
  • 我在这里打开了一个错误报告:issuetracker.google.com/issues/155215248
  • 嗨,@tmm1。不,我已经有一段时间没有使用 Android 了,所以我最终没有进一步研究它。感谢您打开报告! :)

标签: android gradle android-ndk


【解决方案1】:

这里有一个解决方法:

提供命令行选项“doNotStrip

  1. 在下面添加到您的app/build.gradle

    android {
        ...
        if (project.hasProperty("doNotStrip")) {
            packagingOptions {
                doNotStrip '**/*.so'
            }
        }
        ...
    }
    
  2. 通过将选项doNotStrip 提供给命令,使用以下命令生成未剥离的apk

    ./gradlew assembleUnstripped -PdoNotStrip
    
  3. 对于其他构建类型,您仍然可以使用正常的构建命令。例如

    ./gradlew assembleDebug
    

    ./gradlew assembleRelease
    

    但不要将选项 doNotStrip 提供给命令。

【讨论】:

  • 非常感谢!实际上,这几乎正是我最终所做的……但是,是否有可能像我最初尝试的那样做一些简单的事情?如果不可能,你能解释一下为什么吗?我是 Gradle 新手,很高兴了解更多相关信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2014-06-14
  • 1970-01-01
相关资源
最近更新 更多