获得构建拒绝应用程序Info.plist
必须包含一个NSMicrophoneUsageDescription
带有字符串值的键,向用户解释应用程序如何使用此数据.
该应用程序不使用麦克风.或者我认为.
如何追踪使用麦克风的位置?
UPD23112016:鉴于懒惰的答案正在被投票,我已经向苹果提交了一项新的功能请求以关闭此安全漏洞.
UPD05042017:一旦您通过一些半裸的NSMicrophoneUsageDescription将麦克风访问代理到某些第三方框架,您仍然很麻烦,如果用户同意允许麦克风访问,则无法控制何时何地可以使用它.伙计们,请尽职尽责并制作精确的NSMicrophoneUsageDescription,它反映了当使用被第三方仅二进制框架遮挡时,麦克风被完全不受您控制的代码所使用的事实.谢谢.
我们有一个包含4个模块的gradle项目:1个库模块和3个Android应用程序.要构建我们的应用程序,我们使用circleCI.我们还根据本指南禁用了circleCI构建的预定义.
在我将Instabug添加到我们的一个项目之前,一切都很棒.从那以后,我们一直在达到circleCI 4GB的限制.最重要的是,将Instabug作为依赖项的项目将启动preDex
gradle任务,无论如何.要开始新的构建,我们使用以下命令:./gradlew assembleDebug -PpreDexEnable=false
.
使用Instabug的项目在构建期间会收到一些警告,如下所示:
忽略没有关联的EnclosingMethod属性的匿名内部类(com.instabug.library.b)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何"-target"类型选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.
我假设由于为"Instabug项目"启动的preDex任务,我们达到了4 GB的限制.
有没有人知道发生了什么?
编辑:gradle文件
root build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'de.hannesstruss:godot:0.2'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'de.hannesstruss.godot'
apply plugin: 'com.github.ben-manes.versions'
apply …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,包括混淆项目中的instabug库(所有其他第三方库都可以).
我得到的错误是(我知道有关于此错误消息的其他问题,但我的问题只出现在instabug中,并且所提出的解决方案都不适合它).
错误:任务':app:packageRelease'的执行失败.
无法计算C:\ Projects\ProguardExample\app\build\intermediates\classes-proguard\release\classes.jar的哈希值
在尝试解决问题时,我在配置文件中添加了一些语句.
-dontwarn android.support.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class com.instabug.** { *; }
Run Code Online (Sandbox Code Playgroud)
//这里我也尝试更改proguard-project.txt
和我的proguard-rules.pro
-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Run Code Online (Sandbox Code Playgroud)
这是我的build.gradle的样子.
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:appcompat-v7:23.0.1'
//compile 'com.github.danieltwagner:android-async-logger:0.1.0@aar'
compile 'com.instabug.library:instabugsupport:1+'
// compile 'org.apache.commons:commons-collections4:4.0'
}
Run Code Online (Sandbox Code Playgroud)
如果你能指导我解决这个问题,我将非常感激.即使你不知道它的解决方案,但怀疑在哪个区域,我应该研究找到它,请与我分享:)
我计划在生产之前将我的应用发布到测试版。但我只想为测试版用户启用应用内错误报告。不是创建两个 APK(在 prod beta 中启用并在 prod 中禁用),我可以通过编程方式知道用户安装了应用程序的轨道,是否有任何可用的 API?
我想要达到的是,
if(app installed from beta track)
enable in-app-bug reporting
else
disable in-app-bug reporting
Run Code Online (Sandbox Code Playgroud)