使用最新的 Android Studio 并更新了所有平台(OsX):
构建.gradle:
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.xxxxxxlxxxxxx.apps.firebase"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)
Proguard-rules.pro :
-keep public class OpenSource
Run Code Online (Sandbox Code Playgroud)
如您所见,proguard 已启用,并且还给出了仅保留OpenSource类的规则。仍然在我构建它的 apk / 签名 apk 时。并在 apk 文件上使用以下命令:
我搜索了这个stackoverflow,发现了这种情况的无关线程.我也尝试了自己,并将继续尝试,直到解决方案.但如果有人告诉我,如果我在代码中犯了任何错误,那将会很好.
我有一个HashSet这样我可以防止重复的字符串被添加到它.如果HashSet是添加,那么它必须是唯一的字符串.
我的班级声明是:
public List<String> ContactsList;
public List<String> ContactsNumbersList;
Run Code Online (Sandbox Code Playgroud)
我的代码通过获取帮助来获取联系人并将其添加到这两个列表中,HashSet以便我保留重复的数字:
ContactsList = new ArrayList<String>();
ContactsNumbersList = new ArrayList<String>();
HashSet<String> normalizedNumbersAlreadyFound = new HashSet<>();
// Contacts Database queries
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}, null, null, ContactsContract.CommonDataKinds.Phone.SORT_KEY_PRIMARY +" ASC");
while (cursor.moveToNext())
{
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (normalizedNumbersAlreadyFound.add(phoneNumber))
{
phoneNumber = phoneNumber.replace("-","");
phoneNumber = phoneNumber.replace(" ","");
phoneNumber = phoneNumber.replace("(","");
phoneNumber = phoneNumber.replace(")","");
ContactsList.add(name);
ContactsNumbersList.add(phoneNumber);
}
} …Run Code Online (Sandbox Code Playgroud)