Print apks list of specific packageName using googleapi, androidpublisher and service account authentication (v3).

const {google} = require('googleapis');
const key = require('./privateKey.json')
const packageName = "com.company.example"

let client = new google.auth.JWT(
  key.client_email,
  undefined,
  key.private_key,
  ['https://www.googleapis.com/auth/androidpublisher']
)
const androidApi = google.androidpublisher({
  version: 'v3',
  auth: client
})

async function getApksList() {
    let authorize = await client.authorize();
    //insert edit
    console.log('authorize :', authorize);
    let res = await androidApi.edits.insert({
        packageName: packageName
    })
    //get edit id
    let editId = res.data.id
    const res = await androidApi.edits.apks.list({
        editId: editId,
        packageName: packageName
    });
    console.log(`Result ${(JSON.stringify(res))}`);
}
getApksList().catch(console.error);

https://stackoverflow.com/questions/57566862/unable-to-use-google-play-developer-api-even-after-server-to-server-authenticati

 

Unable to use Google Play Developer API even after server to server authentication

I am trying to call Purchases.Subscriptions: get from my local server, but I am getting an error message saying Error: Login Required. I have already created a service account with a role of Project

stackoverflow.com

 

Google Developer Console

  1. "Google Developer Console" > "APIs & Auth" subcategory "APIs" > (api list) "Google Play Android Developer API". Set "STATUS" to "ON".

  2. "APIs & auth" subcategory "Credentials" > "Create new Client ID". Choose "Service account" and create the id.

  3. You should get a P12 key from the browser.

Google Play Developer Console

  1. "Google Play Developer Console" > "Settings" > subcategory "API access".

  2. Make a link to your "Linked Project".

  3. "Service Account" place may be already showing your "Service account" CLIENT ID which made "google developer console".

By default this account is gray indicating that it is not active. So you must activate it and set authority manually.

You should now get a correct response from the API.

https://stackoverflow.com/questions/25481207/error-the-project-id-used-to-call-the-google-play-developer-api-has-not-been-l

 

Error: 'The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console.'

I am getting the following error while accessing Google Play Developer API using a service account: The project id used to call the Google Play Developer API has not been linked in the Google Play

stackoverflow.com

 

by 나숑 2020. 2. 17. 04:41

 

https://developers.google.com/android-publisher/authorization

 

Authorization  |  Google Play Developer API  |  Google Developers

This section contains instructions specific to the Google Play Developer API. See the full OAuth2 documentation for more details. Initial configuration Access to the Google Play Android Developer API is authenticated using the OAuth 2.0 Web Server flow. Be

developers.google.com

https://blog.wky.kr/40

 

[Node.js] google oauth 인증 (구글 로그인)

Node.js에서 google oauth 인증하는 방법이다. passport를 사용하는 방법이 있지만 passport는 사용해보니 무조건 session을 이용해야 했다.(아닐 수도 있음.) 이 글은 passport를 사용하지 않는 방법이다. 1.pass..

blog.wky.kr

var express = require('express');

var app = express();

 

const { google } = require('googleapis');

var googleClient = require('./config/google.json');

 

const googleConfig = {

  clientId: googleClient.web.client_id,

  clientSecret: googleClient.web.client_secret,

  redirect: googleClient.web.redirect_uris[0]

};

const scopes = [

  'https://www.googleapis.com/auth/plus.me'

];

const oauth2Client =new google.auth.OAuth2(

  googleConfig.clientId,

  googleConfig.clientSecret,

  googleConfig.redirect

);

const url = oauth2Client.generateAuthUrl({

  access_type:'offline',

  scope: scopes

});

 

function getGooglePlusApi(auth) {

  return google.plus({ version:'v1', auth });

}

 

asyncfunction googleLogin(code) {

  const { tokens } = await oauth2Client.getToken(code);

  oauth2Client.setCredentials(tokens);

  oauth2Client.on('tokens', (tokens) => {

    if(tokens.refresh_token){

      console.log("리프레시 토큰 :", tokens.refresh_token);

    }

    console.log("액세스 토큰:", tokens.access_token);

  });

  const plus = getGooglePlusApi(oauth2Client);

  const res = await plus.people.get({ userId:'me' });

  console.log(`Hello ${res.data.displayName}! ${res.data.id}`);

  return res.data.displayName;

}

app.get('/login',function (req, res) {

  res.redirect(url);

});

app.get("/auth/google/callback", asyncfunction (req, res) {

 

  const displayName = await googleLogin(req.query.code);

  console.log(displayName);

 

  res.redirect("http://localhost:3000");

});

app.get('/',function (req, res) {

  res.send('Hello World!');

  console.log("로그인 해서 홈으로 돌아옴");

});

app.listen(3000,function () {

  console.log('Example app listening on port 3000!');

});

https://developers.google.com/android-publisher/api-ref/edits/apks/upload

 

Edits.apks: upload  |  Google Play Developer API  |  Google Developers

Note: Requires authorization. This method supports an /upload URI and accepts uploaded media with the following characteristics: Maximum file size: 1GB Accepted Media MIME types: application/octet-stream , application/vnd.android.package-archive Request HT

developers.google.com

http://frontendcollisionblog.com/javascript/2015/12/26/using-nodejs-to-upload-app-to-google-play.html

 

Using node.js to upload your app to Google Play

If you're developing a hybrid mobile app, you may want to stick with node.js to upload your app to the Google Play Store. However, Google's node.js client is still in "alpha", and documentation is very limited. This post gives information about basic setup

frontendcollisionblog.com

https://github.com/googleapis/google-api-nodejs-client

 

googleapis/google-api-nodejs-client

Google's officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included. - go...

github.com

 

by 나숑 2020. 2. 10. 06:32

1. react-native 설치 및 프로젝트 생성

$ npm install -g react-native-cli

$ react-native init TestProject

$ cd TestProject

$ npm install

https://github.com/nashorn74/TestProject

 

nashorn74/TestProject

Contribute to nashorn74/TestProject development by creating an account on GitHub.

github.com

 

2. 환경 변수 설정 (안드로이드용)

windows의 경우 내컴퓨터 - 속성 - 고급 시스템설정 - 환경변수 로 들어가서 시스템 변수에 '변수이름 - ANDROID_HOME 변수 값 - C:\sdk의 경로' 를 입력하면 된다.

mac의 경우 커맨드 창에서 vi ~/.bash_profile을 입력하신 후, 'export ANDROID_HOME=sdk의 경로' 를 입력하신 뒤 :wq를 입력해서 저장하면 된다.

 

3. 안드로이드 에뮬레이터 설치 및 실행

디바이스를 만들기 위해 Create Virtual Device를 누른다.

 

4. 안드로이드 앱 실행

$ react-native run-android

 

https://yuddomack.tistory.com/entry/1React-Native-%EC%84%A4%EC%B9%98%EC%99%80-%EC%8B%A4%ED%96%89hello-world

 

1.React Native 설치와 실행(hello world)

지난 시간에는 꿀잼 리액트의 매력을 나열해봤습니다. 본디 React.js부터 시작하는게 순서가 아니겠나 싶지만 현재 React Native 프로젝트를 진행중이기 때문에 까먹지 않기 위해 React Native의 시작부터 디자인..

yuddomack.tistory.com

https://woolbro.tistory.com/59

 

[React-Native] React-Native 입문기 - iOS, Android 설치 및 실행

안녕하세요~~!! 예전부터 이슈였지만, 최근에야 제가 좀 보게 된 React-Native에 대해서 천천히 포스팅 해보려고 합니다. 설치와 실행기, 기본적인 부분을 공부하면서 포스팅 하려고 합니다!! 기회가 된다면, 프로..

woolbro.tistory.com

https://g6ling.gitbooks.io/react-native-tutorial-korean/react_native_inspector.html

 

React Native Inspector · react-native-tutorial-korean

No results matching ""

g6ling.gitbooks.io

https://facebook.github.io/react-native/docs/getting-started

 

React Native · A framework for building native apps using React

A framework for building native apps using React

facebook.github.io

https://e2xist.tistory.com/606

 

[안드로이드 Android] (error) execution failed for task ':app:processDebugResources'

개요 execution failed for task ':app:processDebugResources' 안드로이드 에서 이런 오류가 나올 중 일부 경우에 대해서 짧게 기록해둡니다. 본문 app/build.gradle 파일을 열어보면 buildToolsVersion "23.0.3"..

e2xist.tistory.com

https://blog.wky.kr/25

 

React Native 설치 Windows, Android Studio 사용하기.

이 글은 Windows(윈도우) 에서 설치하는 방법이다. 1. Visual Studio Code를 통한 React-Native 프로젝트 개발 2. 안드로이드 스튜디오를 통한 React-Native 실행하는 방법 위 2가지를 다룰 것이다. Expo를 이용한..

blog.wky.kr

 

by 나숑 2020. 2. 3. 02:56

https://android.jlelse.eu/android-gitlab-ci-cd-sign-deploy-3ad66a8f24bf

 

Android CI/CD with GitLab — Build, Test, Sign, Upload to Dropbox and send an Email

I’ve been working on an Android app, that was in early demo stage and not released to the Play Store yet. After a while I found myself…

android.jlelse.eu

The .gitlab-ci.yml file is completed and the result should look like this:

image: jangrewe/gitlab-ci-android

before_script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew

cache:
  key: ${CI_PROJECT_ID}
  paths:
  - .gradle/

stages:
- build
- test
- release
- deploy

lintDebug:
  stage: build
  script:
  - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint

assembleDebug:
  stage: build
  script:
  - ./gradlew assembleDebug

testDebug:
  stage: test
  script:
  - ./gradlew -Pci --console=plain :app:testDebug

assembleRelease:
  stage: release
  script:
  - echo $KEYSTORE_FILE | base64 -d > my.keystore
  - ./gradlew assembleRelease
    -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
    -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
    -Pandroid.injected.signing.key.alias=$KEY_ALIAS
    -Pandroid.injected.signing.key.password=$KEY_PASSWORD
  artifacts:
    paths:
    - app/build/outputs/apk/release
    - CHANGELOG

deployRelease:
  image: python:3.5.2
  stage: deploy
  script:
  - pip install requests
  - git clone https://github.com/mega-arbuz/apk-release-deploy.git
  - python apk-release-deploy/deploy.py
    --release.dir=app/build/outputs/apk/release
    --app.name=BestAppEver
    --dropbox.token=$DROPBOX_TOKEN
    --dropbox.folder=release
    --changelog.file=CHANGELOG
    --template.file=TEMPLATE
    --zapier.hook=$ZAPIER_EMAIL_HOOK
    --email.to=$EMAIL_TARGET
  cache: {}

https://gitlab.com/arbuz/android-ci-cd

 

Oleg Shnaydman / Android CI-CD

Project with Android CI/CD pipelines that will build, test, release, sign, upload to Dropbox and send an email with a download link and latest changes.

gitlab.com

https://github.com/mega-arbuz/apk-release-deploy

 

mega-arbuz/apk-release-deploy

Deploy APK file with changelog for Android projects with CI/CD. - mega-arbuz/apk-release-deploy

github.com

 

by 나숑 2020. 1. 20. 07:35

GitLab-CI로 안드로이드 프로젝트에서의 자동 테스트 및 빌드를 성공했으니, 그 다음으로는 자동 테스트를 위한 테스트를 작성해야한다. 안드로이드용 테스트를 작성하기 위해 참고할만한 예제를 공유한다.

https://github.com/android/testing-samples

 

android/testing-samples

A collection of samples demonstrating different frameworks and techniques for automated testing - android/testing-samples

github.com

 

by 나숑 2020. 1. 6. 04:26

엄청 쉽다.


http://androidkt.com/android-mqtt/

Installation

The most convenient way to start a new Android Application is to use Android Studio. Download  Paho Android Service and Android MQTT Client library.Go to your libs folder inside app folder and paste all your .jar

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.android.service/1.1.1/org.eclipse.paho.android.service-1.1.1.jar

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.1.1/org.eclipse.paho.client.mqttv3-1.1.1.jar


To add the Paho Android Service as a dependency to you app add the following parts to your gradle file.


Permission

The Paho Android Service needs the following permissions to work

To be able to create a binding to the Paho Android Service, the service needs to be declared in the AndroidManifest.xml. Add the following within the <application>tag


Receive MQTT Message


마지막으로 주요 기능을 wrapping한 PahoMqttClient 클래스만 하나 만들어주면 끝!


* MQTT Broker URL의 스키마는 tcp:// 이다!

https://stackoverflow.com/questions/24791118/android-paho-mqtt-service-for-publishing


by 나숑 2017. 9. 10. 17:24

안드로이드 앱 개발 시, 에뮬레이터에서 로컬에서 실행 중인 웹서버에 접근하려고 localhost로 접속을 시도하면 다음과 같은 오류가 발생한다. 이전에도 한번 겪어서 로컬 PC의 IP 주소를 넣어주면 되는지 알고 있었지만, 그새 까먹고 다시 삽질했다. ㅠㅠ

No Network Security Config specified, using platform default


윈도에서는 커맨드 창에서 ipconfig라고 입력하면 되지만, mac에서는 다음과 같이 입력해주어야 한다.

ipconfig getifaddr en0


간만에 안드로이드 개발을 하려니 이것 저것 쓸데없이 발목 잡는 것이 많다.

요즘엔 이런 삽질을 경험하지 않아도 되는데, 확실히 안드로이드 개발은 기존 프로그래밍 스타일인 듯하다.

by 나숑 2017. 9. 10. 15:55

아이폰은 그냥(!!) 되는데, 이놈의 안드로이드는 그냥 안된다.

그리고, 킷캣에서는 더 안된다... 쯧


Android WebView File Upload 처리

http://gogorchg.tistory.com/entry/Android-WebView-File-Upload


[Android, Hybrid]openFileChooser 킷캣에서 동작하지 않는 문제( openFileChooser Kitkat bug )

http://fimtrus.tistory.com/entry/Android-HybridopenFileChooser-%ED%82%B7%EC%BA%A3%EC%97%90%EC%84%9C-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AC%B8%EC%A0%9C-openFileChooser-Kitkat-bug

by 나숑 2016. 11. 4. 19:12

별로 많은 라이브러리를 사용하고 있는 것 같지도 않은데, 메소드 개수가 65536개가 넘었다고 빌드할 때 ':app:transformClassesWithDexForDebug' 오류가 발생했다.

다음 블로그 내용을 살펴보면 원인과 해결 방법이 정리되어 있는데, 결론적으로 API 20 이하 버전의 단말기를 지원하기 위해서는 불가피한 문제라는 것이다. 황당~!

http://bbulog.tistory.com/41


다음 내용을 참고하면 어찌되었든 문제는 해결된다.

http://stackoverflow.com/questions/32807587/com-android-build-transform-api-transformexception

you can see the documentation of Android

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>


by 나숑 2016. 10. 28. 14:56

이전에 Eclipse+ADT로 개발을 할 때에는 debug.keystore 인증서 지문을 알아내는 것이 편했는데, 안드로이드 스튜디오에서는 어떻게 하는지 몰라서 cmd 상에서 명령어로 알아냈었다. 그러다가 오늘 안드로이드 스튜디오 자체에서 바로 알아내는 방법을 찾았다.

http://stackoverflow.com/questions/27609442/how-to-get-the-sha-1-fingerprint-certificate-in-android-studio-for-debug-mode


by 나숑 2016. 10. 27. 19:36