Android开发之移除权限
在Android开发结束后,我们将build好的App Bundle上传至Google Play。这时Google可能会提示一些需要解决的错误,比如xx权限需要限制,需要解释为什么需要这些权限,需要添加文字描述和视频链接,但是我们检查一遍项目后发现并没有添加这些权限啊,那么为什么会有这些提示呢?
这时我们会全局搜索项目找到这些文件,然后发现在build文件夹中有这些权限,但是我们并没有添加里面还有,以下是解决这一系列问题的过程。
首先我把缓存都清理掉,然后重新加载第三方,然后重新build App Bundle,结果还是会在build文件夹中生成合成的权限。发现此路不通,然后怎么办呢?
Android取消某权限
- 如果权限是在本项目中时直接移除即可,但是当权限是在第三方库中就需要通过在主项目的AndroidManifest.xml中增加如下内容:
<uses-permission android:name="android.permission.xxxx" tools:node="remove"/>
- 还可以通过修改app->build.gradle中的android{},可以在末尾添加如下内容:
project.afterEvaluate {
project.android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processResources.doFirst { pm ->
String manifestPath = output.processResources.manifestFile
def manifestContent = file(manifestPath).getText()
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.xxxx"/>', '')
file(manifestPath).write(manifestContent)
}
}
}
}
Android的大部分依赖库都需要开启代理才能下载,但是当我们的代理欠费或者其他原因无效后怎么取消呢?
AndroidStudio取消代理
-
AndroidStudio->Settings->Appearance&Behavior->System Settings->HTTP Proxy->No proxy
-
open ~/.gradle/gradle.properties
# systemProp.http.proxyHost=127.0.0.1
# systemProp.http.proxyPort=7890
# systemProp.https.proxyHost=127.0.0.1
# systemProp.https.proxyPort=7890
现在我开发Android都是使用Flutter,那么如何用Flutter直接在build时签名?
AndroidStudio自动签名
- 首先通过keytool生成签名文件,可以在终端中进行如下操作:
keytool -genkey -v -keystore <存放的路径>/文件名字.jks -keyalg RSA -keysize 2048 -validity 有效时间 -alias 别名
执行命令后按照指令输入,记住密码xxxx;
- 在android目录下创建key.properties文件,添加如下参数:
storePassword=xxxx
keyPassword=xxxx
keyAlias=别名
storeFile=<存放的路径>/文件名字.jks
- 在android->app->build.gradle头部添加如下内容:
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
添加signingConfigs{}在buildTypes{}之前,添加如下内容:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
修改buildTypes{}->release{}中为如下内容:
signingConfig signingConfigs.release
- 在Flutter设定版本在android->local.properties中内容。
- 也可通过在执行build命令时添加–build-number xx。