C:\Users\Administrator>cd .android C:\Users\Administrator\.android>keytool -list -v -keystore debug.keystore 輸入密鑰庫口令: (默認密碼:android。此處輸入android就能夠) 密鑰庫類型: JKS 密鑰庫提供方: SUN 您的密鑰庫包含 1 個條目 別名: androiddebugkey 建立日期: 2018-3-21 條目類型: PrivateKeyEntry 證書鏈長度: 1 證書[1]: 全部者: C=US, O=Android, CN=Android Debug 發佈者: C=US, O=Android, CN=Android Debug 序列號: 1 有效期爲 Wed Mar 21 22:58:48 CST 2018 至 Fri Mar 13 22:58:48 CST 2048 證書指紋: MD5: ********6:D5:69:A0:51:53:41:61:76:35:2B SHA1: ************************************************ #####各自電腦的不一樣,此處已經被我註釋 SHA256: 79:12:C0:A********6E:46:B3:77:8A:DE:FF:ED:E7:EC:7A:6E:3E:7A:FC:F0:BE:0A:B5:E5:4B 簽名算法名稱: SHA1withRSA 主體公共密鑰算法: 1024 位 RSA 密鑰 版本: 1 ******************************************* ******************************************* Warning: JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。 C:\Users\Administrator\.android>
附加:android
一個簡單高效的方法:在Android Studio工具中,在右側找到菜單欄「Gradle」—>」APP名」—>「Tasks」—>「android」—>雙擊「signReport」便可。這時在Terminal中能夠查看debug版本、resalse版本的SHA1和MD5值。ios
D:\AndroidSDK\platform-tools>adb shell pm list package -f package:/system/priv-app/HwCamera/HwCamera.apk=com.huawei.camera package:/data/app/so.ofo.labofo-1/base.apk=so.ofo.labofo package:/data/app/com.liu.dance-1/base.apk=com.liu.dance package:/system/app/HwLauncher6/HwLauncher6.apk=com.huawei.android.launcher package:/data/app/com.android.mediacenter-2/base.apk=com.android.mediacenter package:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephony package:/system/app/HwInternetAudioService/HwInternetAudioService.apk=com.huawei.internetaudioservice package:/system/app/HwCallRecorder/HwCallRecorder.apk=com.android.phone.recorder package:/system/app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendar package:/data/app/com.huawei.health-1/base.apk=com.huawei.health package:/data/app/com.huawei.hidisk-1/base.apk=com.huawei.hidisk package:/system/app/HwBluetoothImport/HwBluetoothImport.apk=com.huawei.bluetooth package:/system/priv-app/MediaProvider/MediaProvider.apk=com.android.providers.media package:/system/app/HwThemeManager/HwThemeManager.apk=com.huawei.android.thememanager package:/system/priv-app/HwChrService/HwChrService.apk=com.huawei.android.chr package:/system/app/HwAppObserver/HwAppObserver.apk=com.huawei.android.nff package:/data/app/com.qiyi.video-2/base.apk=com.qiyi.video package:/system/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk=com.google.android.onetimeinitializer package:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper package:/system/app/HwFloatTasks/HwFloatTasks.apk=com.huawei.android.FloatTasks package:/system/priv-app/HwIntelligent/HwIntelligent.apk=com.huawei.intelligent package:/system/priv-app/HwMotionRecognition/HwMotionRecognition.apk=com.huawei.motionservice package:/system/app/SmartcardService/SmartcardService.apk=org.simalliance.openmobileapi.service package:/data/app/com.huawei.appmarket-2/base.apk=com.huawei.appmarket package:/system/app/HwParentControl/HwParentControl.apk=com.huawei.parentcontrol package:/system/app/HwSecureIME/HwSecureIME.apk=com.huawei.secime
參考文章連接算法
親測可用(在此分享一個老黃曆的SQLite的Huangli.db文件,文件裏面包含1901~2100年的農曆宜和忌信息,具體連接:https://pan.baidu.com/s/1s3I73KYX4LUy8ges4QCDPA 密碼:nka0)sql
具體內容以下:shell
咱們就是要在應用啓動的時候讀取assets目錄下的數據庫,而後把test.db寫入SDcard的data/data/com.datab.cn路徑下邊。 咱們首先新建一個類:SQLdm.java: [java] view plain copy <span style="font-size:18px;">package com.datab.cn; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; import android.content.res.AssetManager; import android.database.sqlite.SQLiteDatabase; import android.util.Log; /** * 這個類就是實現從assets目錄讀取數據庫文件而後寫入SDcard中,若是在SDcard中存在,就打開數據庫,不存在就從assets目錄下複製過去 * @author Big_Adamapple * */ public class SQLdm { //數據庫存儲路徑 String filePath = "data/data/com.datab.cn/test.db"; //數據庫存放的文件夾 data/data/com.main.jh 下面 String pathStr = "data/data/com.datab.cn"; SQLiteDatabase database; public SQLiteDatabase openDatabase(Context context){ System.out.println("filePath:"+filePath); File jhPath=new File(filePath); //查看數據庫文件是否存在 if(jhPath.exists()){ Log.i("test", "存在數據庫"); //存在則直接返回打開的數據庫 return SQLiteDatabase.openOrCreateDatabase(jhPath, null); }else{ //不存在先建立文件夾 File path=new File(pathStr); Log.i("test", "pathStr="+path); if (path.mkdir()){ Log.i("test", "建立成功"); }else{ Log.i("test", "建立失敗"); }; try { //獲得資源 AssetManager am= context.getAssets(); //獲得數據庫的輸入流 InputStream is=am.open("test.db"); Log.i("test", is+""); //用輸出流寫到SDcard上面 FileOutputStream fos=new FileOutputStream(jhPath); Log.i("test", "fos="+fos); Log.i("test", "jhPath="+jhPath); //建立byte數組 用於1KB寫一次 byte[] buffer=new byte[1024]; int count = 0; while((count = is.read(buffer))>0){ Log.i("test", "獲得"); fos.write(buffer,0,count); } //最後關閉就能夠了 fos.flush(); fos.close(); is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } //若是沒有這個數據庫 咱們已經把他寫到SD卡上了,而後在執行一次這個方法 就能夠返回數據庫了 return openDatabase(context); } } } </span> 而後,咱們在DatabActivity.java中得到數據庫中的數據: [java] view plain copy <span style="font-size:18px;">package com.datab.cn; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.TextView; public class DatabActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //打開數據庫輸出流 SQLdm s = new SQLdm(); SQLiteDatabase db =s.openDatabase(getApplicationContext()); TextView textv = (TextView) findViewById(R.id.textv); //查詢數據庫中testid=1的數據 Cursor cursor = db.rawQuery("select * from testbiao where testid=?", new String[]{"1"}); String name = null; if(cursor.moveToFirst()){ name = cursor.getString(cursor.getColumnIndex("name")); } //這是一個TextView,把獲得的數據庫中的name顯示出來. textv.setText(name); cursor.close(); } }</span>