Android APK的簽名有助于提高應用的安全性,避免被第三方篡改;并能夠通過簽名來獲取一些簽名等級的系統(tǒng)接口調(diào)用權限。本文以IDO-EVB3020開發(fā)板為例,介紹如何生成系統(tǒng)的簽名文件和在Android Studio 中配置APK簽名。如果只是APP開發(fā)者,可以跳過第一節(jié),直接使用創(chuàng)建好的簽名文件配置 Android Studio。
IDO-EVB3020基于RK的PX30四核開發(fā)板,主頻高達 1.5 GHz采用 Mali-G31 MP2 GPU,支持H.265等多格式 1080P 60fps 視頻解碼;支持MIPI-CSI 攝像頭接口,支持10.1寸MIPI屏,7/8/10.1寸LVDS屏;支持以太網(wǎng),4G/WIFI/藍牙無線通信;板載4路RS232+2路RS485;預留1路CAN總線,4麥克風陣列。適用于工業(yè)HMI,智能設備顯控,智能家居。
了解IDO-EVB3020更多詳情資料可查看規(guī)格書:IDO-EVB3020 產(chǎn)品手冊
創(chuàng)建簽名文件
簽名需要用到的系統(tǒng)簽名文件 platform.x509.pem 和 platform.pk8 位于 SDK build/target/product/security 目錄,通過 keytool-importkeypair 工具轉換為jks簽名文件
工具鏈接:https://github.com/getfatday/keytool-importkeypair
工具使用方法:
Android Studio 工程簽名配置
a. 在工程根目錄一個signature文件夾,并將evb3020.jks 文件放入該文件夾下;
b. 修改工程根目錄的 app/build.gradle 文件,添加signingConfigs和配置buildTypes如下:
android?{
compileSdk?32
defaultConfig {
applicationId?"com.example.myapplication"
minSdk?21
targetSdk?32
versionCode?1
versionName?"1.0"
testInstrumentationRunner?"androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release?{
storeFile?file("../signature/evb3020.jks")
storePassword?'123456'
keyAlias?'evb3020'
keyPassword?'123456'
}
debug?{
storeFile?file("../signature/evb3020.jks")
storePassword?'123456'
keyAlias?'evb3020'
keyPassword?'123456'
}
}
buildTypes {
release?{
minifyEnabled?false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),?'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
compileOptions {
sourceCompatibility?JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
簽名驗證
以網(wǎng)絡調(diào)用為例,未簽名的APK在配置 CONNECTIVITY_INTERNAL 運行時系統(tǒng)會提示缺少相關的接口調(diào)用權限。
neither?user?10060?nor?current?process?has?android.permission.connectivity_internal
而簽名后的APK,則可以成功調(diào)用系統(tǒng)網(wǎng)絡設置接口。