четверг, 26 ноября 2015 г.

Ошибка: Duplicate files copied in APK

При запуске проекта с подключенными внешними библиотеками (Youtube,jakson, etc) возникает ошибка "Duplicate files copied in APK".
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.google.apis.google-api-services-youtube/pom.xml
    File1: C:\Users\%USERNAME%\AndroidStudioProjects\OnlySoundTube\app\libs\google-api-services-youtube-v3-rev152-1.21.0.jar
    File2: C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1\com.google.apis\google-api-services-youtube\v3-rev152-1.21.0\ac36dceca5fed43bc691ceacc311726992b77922\google-api-services-youtube-v3-rev152-1.21.0.jar
Исправляется:
добавлением в build.gradle(Module:app) проекта следующей конструкции, содержащей название проблемного файла. Конкретно для моего примера :
android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx   
       exclude 'META-INF/maven/com.google.apis.google-api-services-youtube/pom.xml'
    }



вторник, 24 ноября 2015 г.

Как получить значения дополнительных реквизитов или дополнительных сведений в 1С 8.3 (БП 3.0, ЗУП 3.0)

//прим. доп. сведения для спр.контрагенты
Функция РН_ПолучитьЗначениеДопРеквизита(Контрагент,НаименованиеДопРеквизита,ЭтоДопСведение = Ложь)
Запрос = Новый Запрос;
Если ЭтоДопСведение Тогда
Запрос.Текст = 
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Ссылка
| И ДополнительныеСведения.Свойство.Заголовок = &НаименованиеДопРеквизита
| И НЕ ДополнительныеСведения.Свойство.ПометкаУдаления"
Иначе
Запрос.Текст = 
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| КонтрагентыДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
|ГДЕ
| КонтрагентыДополнительныеРеквизиты.Свойство.Заголовок = &НаименованиеДопРеквизита
| И КонтрагентыДополнительныеРеквизиты.Ссылка = &Ссылка
| И НЕ КонтрагентыДополнительныеРеквизиты.Свойство.ПометкаУдаления";
КонецЕсли;
Запрос.УстановитьПараметр("НаименованиеДопРеквизита", НаименованиеДопРеквизита);
Запрос.УстановитьПараметр("Ссылка", Контрагент);
Выборка = Запрос.Выполнить().Выбрать();             
Если Выборка.Количество() > 0 Тогда
Выборка.Следующий();
Возврат Выборка.Значение
Иначе
Возврат "";
КонецЕсли;
КонецФункции

//пример использования к прим. в печатной форме ТОРГ12
НеТиповоеПредставлениеГрузополучателя = РН_ПолучитьЗначениеДопРеквизита(СведенияОДокументе.Грузополучатель,"РН_НаименованиеДляПечати",Ложь);

воскресенье, 22 ноября 2015 г.

keytool, получение ключа для API


Следуя по инструкции столкнулся с некоторыми сложностями при получении ключа для использования библиотек(API) от Google.
Конкретно неясно было где достать keytool и как его использовать. В рунете не нашел ничего толкового, поэтому описываю сей процесс выбрав в качестве основы API keys для Android:
  • Открыть командную строку: Пуск - Выполнить - набрать"cmd"
  • Перейти в папку Java т.е набрав команду(путь к яве выделил красным, может отличаться):cd C:\Program Files\Java\jre1.8.0_51\bin  
  • Далее набрать keytool -list -v -keystore %USERPROFILE%/.
    android/debug.keystore
  • При запросе пароля, набрать android, результатом должен быть похож на:
    Enter keystore password:

    Keystore type: JKS
    Keystore provider: SUN

    Your keystore contains 1 entry

    Alias name: androiddebugkey
    Creation date: 25.10.2014
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=Android Debug, O=Android, C=US
    Issuer: CN=Android Debug, O=Android, C=US
    Serial number: 5d077fee
    Valid from: Sat Oct 25 14:55:29 YEKT 2014 until: Mon Oct 17 13:55:29 YEKT 2044
    Certificate fingerprints:
             MD5:  14:91:19:3D:4B:47:CE:ED:1D:A4:F4:A8:XX:XX:XX:XX
             SHA1: DE:CB:18:CE:FF:91:5F:2E:ED:B5:F5:ED:9C:C7:95:F8:XX:XX:XX:XX
             SHA256: C4:AD:66:E5:CB:7D:0D:35:A2:E4:83:EC:F2:93:F6:0E:1A:43:E2:7A:D5:
    8A:06:A7:E6:BE:C1:C6:05:8F:E9:19
             Signature algorithm name: SHA256withRSA
             Version: 3

    Extensions:

    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: E0 6A 38 DE FF 79 5C 34   7A 98 17 D5 26 CA 74 F3  .j8..y\4z...&.t.
    0010: 92 E6 A3 60                                        ...`
    ]
    ]
  • Полученный SHA1(выделено красным), скопировать в Credentials - Create Android API key. Предварительно указав Package name проекта из MainActivity.


ps. на всякий пару ссылок для инфо на английском:
https://support.google.com/cloud/answer/6158862?hl=en#creating-android-api-keys
http://livingcode.co/index.php/2014/04/10/android-studio-how-to-get-debug-signing-certificate-on-windows/

Подключение библиотек(API) в Android Studio

Подключение библиотеки из локального .jar-файла
  • Разархивировать и скопировать YouTubeAndroidPlayerApi.jar из папки \libs в папку C:\Users\%USERNAME%\AndroidStudioProjects\MyProject1\app\libs
  • File -> Project Structure... или Ctrl + Alt + Shift + S
  • Закладка app -> Dependencies, далее нажать на кнопку с плюсом, выбрать 2: File dependency и выбрать YouTubeAndroidPlayerApi.jar
Подключение библиотеки из внешнего репозитория
  • File -> Project Structure... или Ctrl + Alt + Shift + S
  
  • Закладка app -> Dependencies, далее нажать на кнопку с плюсом, выбрать 1: Library dependency
 
  •  В строке поиска набрать название API, к примеру "picasso" и нажать на кнопку с лупой(Shift + Enter)
  
  • Выбрать нужную библиотеку из списка и нажать "Ок"