Code Monkey home page Code Monkey logo

apm's Introduction

AIR Package Manager (apm)

The AIR Package Manager allows management of AIR libraries and extensions and assists in creation of the application descriptor.

It is comprised of a repository server and a command line client. This repository forms the source of the command line client.

The goals of apm are to:

  • be command line tool for macOS and Windows;
  • read from a repository of packages (ANEs and SWCs);
  • install (download) packages and dependencies;
  • update packages and dependencies;
  • assist in the creation of the application descriptor (particularly on iOS / Android to merge android manifest additions and iOS info additions / entitlements );
  • assist in the management of properties and settings for an AIR application;
  • assist in the building of an AIR application;

This project runs in combination with the APM repository which aims to provide a repository server to be the store for packages.

See the wiki for details.

Get involved

Have a look at the contributing guidelines to see how you can contribute to apm.

apm's People

Contributors

j3k0 avatar marchbold avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apm's Issues

Can't installl GameService `CONFLICT :: fatal error : found [1] conflicting packages`

Hello, I have met a fatal error. What I did is nothing but removed iab samsung variant and replace it by amazon variant. And then I did call apm update, I got the error message:

CONFLICT :: fatal error : found [1] conflicting packages
CONFLICT :: com.distriqt.playservices.Base
CONFLICT :: ├── 18.0.1 required by: [email protected]
CONFLICT :: └── 17.5.1 required by: [email protected]
install :: 

And then the gameservice ane got removed. And I couldn't install it.
Here's the full output:

mingjing@Mings-MBP Bf % apm install com.distriqt.GameServices       
✓ Found package: [email protected]    
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected]   
CONFLICT :: fatal error : found [1] conflicting packages
CONFLICT :: com.distriqt.playservices.Base
CONFLICT :: ├── 18.0.1 required by: [email protected]
CONFLICT :: └── 17.5.1 required by: [email protected]
install :: 

project.apm.zip

And this is my config file.

AndroidManifest.xml and InfoAdditions.xml not merged into final description file

Hi, I just followed the post "Migrating to the AIR Package Manager" and setup 2 additional description files (AndroidManifest.xml and InfoAdditions.xml), but I find the content is not getting merged into my final description file. Do I need to set the relative path for these 2 files?

p.s.
When I execute the cmd apm generate app-descriptor, I didn't see the output like Merging with supplied main manifest: config/android/AndroidManifest.xml

Build configurations

Add the ability to specify different project build configurations to allow different values to be used by the generate commands (eg inserted into the application descriptor).

Currently we have:

"configuration": {
    "packageParam": "12345678"
}

It could be turned into something like:

"configuration": {
    "packageParam": "12345678"
},
"buildTypes": {
    "debug": {
        "configuration": {
            "packageParam": "AAAAABBBBB"
        },
    },
    "release": {
    }
}

We will need a way to specify the configuration to use when building and the values in there would then override the default configuration values.

apm installation

I completed all the steps required for apm, but when I run apm -version i get zsh: command not found: apm

what could be wrong?
image

image

apm confused from package with similar names

In our apm repo, I have 2 packages named feathersui-source and feathersui-starling-compat.

[email protected] has a dependency over [email protected]

My project already has feathersui-source installed.

When I try to install feathersui-starling-compat it wouldn't do it, because feathersui-source version is larger that featherui-starling-compat version (which makes no sense, so I guess it's just confused).

$ apm install feathersui-starling-compat
[email protected]
Already installed: [email protected] [fovea] >= 1.0.0

feathersui-starling-compat/package.json

{
  "id": "feathersui-starling-compat",
  "name": "Feathers Starling Compat",
  "url": "https://github.com/BowlerHatLLC/feathersui-starling-compat",
  "docUrl": "https://github.com/BowlerHatLLC/feathersui-starling-compat",
  "description": "Backwards compatibility library to assist migration from Feathers 2.x to Feathers 3.x",
  "type": "src",
  "version": "1.0.0",
  "sourceUrl": "https://github.com/j3k0/feathersui-starling-compat/releases/download/v1.0.0/feathersui-starling-compat_1.0.0.airpackage",
  "dependencies": ["[email protected]", "starling-source:2.7.0"],
  "parameters": [],
  "tags": ["components", "gui", "starling", "ui", "widgets"]
}

application descriptor fails with attributes indented with tabulation

This fails (using the tabulation character to indent XML attributes):

<?xml version="1.0" encoding="utf-8" ?>
<application
	xmlns="http://ns.adobe.com/air/application/18.0"
	minimumPatchLevel="0">
	<id>com.example.app</id>
</application>

This works (using space to indent the XML attributes):

<?xml version="1.0" encoding="utf-8" ?>
<application
 xmlns="http://ns.adobe.com/air/application/18.0"
 minimumPatchLevel="0">
	<id>com.example.app</id>
</application>

Side note: I improved a tiny bit the application descriptor validation, so it returns the detail of the error (incoming PR). It says: "<id> tag not found" when it fails in the above case.

Manifest merger never ends.

The manifest merger task stays running forever (when run by apm)

I need to CTRL-C to stop execution, but then the tasks are still running (and accumulate).

ps aux showed that I had 8 processes running like this one:

/usr/bin/java -jar "/Users/jeko/Library/Application Support/airsdk.apm/Local Store/tools/manifest-merger-30.0.1.jar" --main /tmp/xxx/.tmp538437/AndroidManifest.xml --property PACKAGE=air.com.my.app --remove-tools-declarations

When ran manually, it exits almost immediately and show the result on the console.

It occasionally succeeds though, might it be a race condition?


Also, apm should make sure it kills it child processes when it is killed.

Newb Github Issue

For some reason I need to keep re-running: . ~/.bashrc - in every new window else, apm is not found.

Ok, main issue though, I keep getting the message:

There was an issue accessing the package, this is a private package so check you have a valid license and that you have correctly set your github access token

I set the token in my git profile, I updated my keychain -- is there somewhere in apm i'm missing to set something for git?

Multiple repositories

Allow multiple repositories to be configured for a project

Repositories can be specified in the repositories section of the project.apm eg:

"repositories": [
        { 
            "name": "airnativeextensions",   
            "location": "https://airnativeextensions.com/repository"
        }
    ]

iOS additions merging

Merge the InfoAdditions and Entitlements from packages into the application descriptor

Localized <description> converted to invalid format

apm somehow changes the format of localized descriptions.

In config/application-descriptor.xml, we have:

  <description>
    <text xml:lang="en">My App</text>
    <text xml:lang="fr">Mon App</text>
  </description

After apm generate app-descriptor, in src/Test-app.xml we have:

  <description>
    <text aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace">My App</text>
    <text aaa:lang="fr" xmlns:aaa="http://www.w3.org/XML/1998/namespace">Mon App</text>
  </description>

Unfortunately, the second format is not recognized by adt, which fails with error 100: Descriptor cannot be parsed. Changing manually to the original format in the generated file solves the issue, but isn't a practical solution.

Generate advanced config files for the merged configuration

Here we aim to generate Android Manifest and iOS InfoAdditions/Entitlements config files that can be used as additional fields merged into the main app descriptor. ie.

project.apm
config
|___ android
  |___ AndroidManifest.xml
|___ ios
  |___ InfoAdditions.xml
  |___ Entitlements.xml

This should use some well formatted template that contains standard fields for the platforms, eg

  • minimum / target sdk versions for android
  • minimum ios version

This should make it easier for user's to add their own additions to the relevant app descriptor sections.

Local packages

Ability to use a local airpackage, i.e. not downloaded from the repository.

Conflict when installing packages

When installing Firebase, seeing the following -- does this mean that this needs to be resolved, or I can simply continue?

apm install com.distriqt.Firebase
✓ Found package: [email protected]    
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected] 
✓ Found package: [email protected]   
✓ Found package: [email protected]   
✓ Found package: [email protected]   
CONFLICT :: fatal error : found [1] conflicting packages
CONFLICT :: com.distriqt.playservices.Base
CONFLICT :: ├── 18.0.1 required by: [email protected]
CONFLICT :: └── 17.5.1 required by: [email protected]
install :: 

Possibility to add only platform-specific strings to descriptor

Hi!

Currently our game have there platform-specific projects: iOS, Android and Amazon.
Projects on each platform have different lists of ANEs inside.
So it would be nice to have some platform argument in apm init to keep descriptor clean and do not download redundant ANEs on install stage.
For example, now we have about 130 strings in descriptor for iOS, 550+ for Android and 450+ for Amazon.
And it feels dirty when iOS project has much more Android strings the iOS ones.

apm install failing silently

During apm install, downloading one of the dependencies did timeout.

However apm went on to the end without reporting an error: except a x symbol next to the package name when it tried downloading. The package wasn't installed, so the next steps in the build chain failed.

apm install should keep a log of errors when doing apm install, display them at the end of the process and exit with a non-zero code if there where any.

application descriptor not found

Sorry to create the 1st issue (of course it had to be me 😅 ). Giving it a try in several projects but i get the same "application descriptor not found".

I tried in Flex and Feathers projects (I dont have any pure as3 ones to test) and both in project folder and src.

Edit: On side note i believe this is an issue with apm itself and not the fact it doesnt find the decriptor

Memory ANE is missing

Hi, this is surely not an issue. I just don't know where to put this piece of info.
I find that Memory ANE is missing from the repo. For the time being I will just manually add it but it would be nice to have it in the repo.

execute uninstall didn't remove anes from the description's file

Hi, I'm trying to uninstall the facebook ane by calling uninstall, and here's the output:

$ apm uninstall com.distriqt.facebook.Core
Uninstall package : com.distriqt.facebook.Core
✓ Removed package : com.distriqt.facebook.Core                                  
Uninstall package : com.jetbrains.kotlin
✓ Removed package : com.jetbrains.kotlin
Uninstall package : com.android.installreferrer
✓ Removed package : com.android.installreferrer                                 
Uninstall package : androidx.core
androidx.core :: Required by another package - skipping uninstall
Uninstall package : com.distriqt.Bolts
✓ Removed package : com.distriqt.Bolts
Uninstall package : com.distriqt.Core
com.distriqt.Core :: Required by another package - skipping uninstall

I tried to regenerate the description file and these anes are also listed in the extensions section.

How do I publish a package for apm to see?

Sorry, don't know where else to ask, and didn't find any obvious spot on the web where this question is answered.

So, assuming that I have a general-use SWC library, and it is hosted here on GitHub, and I would like to publish it as a package that is discoverable and installable through apm, how do I proceed?

Thank you.

apm install is slow

On my setup, apm install takes more than 10 minutes to complete, even when all the dependency are already installed. There are approximately 50 packages in apm_packages.

If a package with the correct version is already found in the cache, apm install should go over it very quickly. For now, it looks like it's checking with the server and re-extracting it.


Iterating is very time consuming, when debugging stuff like https://github.com/distriqt/ANE-Firebase/issues/387

It also makes CI builds very slow, because they have to run apm install, just in case a new dependency has been added.

Publish a private package

When publishing a package where the sourceUrl is private (in a private git repo), I get this error: source url returned 404

However, I'm able to install packages from private repos (namely those from Distriqt).

The github token is set in the apm config file.

Since I'm publishing into an internal apm repository, I wouldn't mind having an option to disable the sourceUrl test.

Project config templating

For now, the project configuration allows replacing variables like so:

${somevar} gets replaced with project.configuration.somevar.

Some thoughts.

1. conditionals

If would be nice to be able to some thing like this:

${ env = "production" ? somevar : someothervar }

2. application descriptor

Shouldn't the application descriptor be a template too?

3. overrides

Instead of modifying the project when building for different targets, allow the project configuration to be overriden with environment variables. I'm preparing PR with this idea. (Done #43)

Generate app-descriptor Error #2004: One of the parameters is invalid

I get an error when trying to generate the app descriptor.

$ apm generate app-descriptor
Android package name: air.xxx.xxx.xxx
⣾ Android manifest merging
generate/app-descriptor :: Error #2004: One of the parameters is invalid.

Well, that could very well be because I didn't read the whole documentation. Anyway, knowing which parameter is invalid would be helpful (instead of One of the parameters is invalid).

Here's the project.apm file.

{
    "identifier": "xxx.xxx.xxx",
    "name": "Xxx",
    "filename": null,
    "version": "1.15.0",
    "versionLabel": null,
    "dependencies": [
        {
            "version": "2.7.0",
            "id": "starling"
        }
    ],
    "configuration": {},
    "repositories": [],
    "deployOptions": {}
}

Error #3003: File or directory does not exist.

Running from 0.6-beta, right after apm init in an empty directory.

$ ~/Documents/github/apm/client/out/apm -l debug generate app-descriptor
D::Log::setLogLevel( debug )
D::RunConfig::loadEnvironment()
D::ProcessQueue::checkAndStartNextProcess(): 3
D::LoadMacOSEnvironmentVariablesProcess::start()
D::LoadMacOSEnvironmentVariablesProcess::Process exited with: 0
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 2
D::LoadProjectDefinitionProcess::start()
D::LoadProjectDefinitionProcess::found project file - loading ...
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 1
D::LoadUserSettingsProcess::start()
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 0
D::GenerateAppDescriptorCommand::execute(): ...

D::ProcessQueue::checkAndStartNextProcess(): 4
D::ProcessQueue::checkAndStartNextProcess(): 2
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 1
Android package name: air.com.my.app
⣾ Android manifest merging
D::AndroidManifestMergeDependencyCheckProcess::Retrieving path to java installation...
⣻ Android manifest merging
✓ Android manifest merge
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 0
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 3
⢿ iOS additions merging
✓ iOS additions merge complete
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 2
⡿ iOS entitlements merging
✓ iOS entitlements merge complete
D::ProcessQueue::process_eventHandler( process_complete )
D::ProcessQueue::checkAndStartNextProcess(): 1
✗ Error: Error #3003: File or directory does not exist.
D::ProcessQueue::process_eventHandler( process_failed )
generate/app-descriptor :: Error #3003: File or directory does not exist.

Project config parameters description

Packages parameters are defined with an ID and a default value. A nice addition would be some text description.

Currently:

$ apm project config
apsEnvironment=development
facebookAutoInitEnabled=true

My idealized output:

$ apm project config

# Apple push notifications environment (development | production)
apsEnvironment=development

# Tell the Facebook SDK not to initialize automatically
# See https://docs.airnativeextensions.com/docs/facebookapi/core/initialise-the-extension
facebookAutoInitEnabled=true

--

In package.json this could be done like so:

{
  "parameters": [
    {
      "name": "facebookAutoInitEnabled",
      "defaultValue": "true",
      "description": "Tell the Facebook SDK not to initialize automatically\nSee https://docs.airnativeextensions.com/docs/facebookapi/core/initialise-the-extension"
    }
  ]
}

_Originally posted by @j3k0 in https://github.com/airsdk/apm/discussions/59_

build.config

build.config probably shouldn't be part of the git repository, and should be .gitignore-d, since it's different for everyone it risks getting committed by mistake when there is a contribution.

There should be a build.config.example file, to show what should go in it.

Possible abuse to retrieve users github tokens

If a package's sourceUrl is set to any URL that contains the string github.com, the token is attached to the request.

cf:

if (url.indexOf( "github.com" ) >= 0 && githubToken.length > 0)

possible abuse

By setting the sourceUrl to: https://www.evil.com/releases/assets/github.com/package_1.0.0.airpackage

The publisher / owner of the evil.com domain can then collect github tokens from people downloading the package.

possible solution

Check that the download URL starts with https://api.github.com/

I'll test this and submit a PR. (Done: #36)

Use `id` and `versionNumber` from template application-descriptor

I understand why id and versionNumber are pulled from the project config file, they're a bit of a special because they're probably the only fields absolutely required to get a valid application descriptor (when not using a source application-descriptor.xml I mean)

In our case, I would rather not use the values in the project.apm file and use values in the source xml file. However even setting them to null in the project config, it always erases the values I set.

Support for WSL and git bash on Windows

Hello, When I run apm -version, I'm getting the warning message which: no adl in (./F:\AIRSDK/bin).
I'm on Win7 and have properly setup environment variable and path. (adl command works)

I noticed that the warning message used backslash. Shouldn't it be a forward slash on windows? Thanks!

Dependency version "ranges"

Add the ability to specify a range or minimum version for a dependency, so a package will select the latest release within certain version constraints.

Empty file as src/MyApplication-app.xml is not re-generated (silently)

After an error in generate app-descriptor, I ended up with an empty app descriptor.

Subsequent calls to apm generate app-descriptor where failing silently (keeping the empty file as-is), took me a few iteration to realize I did indeed fix my issue, but had to delete the app descriptor xml file for apm to create a new one.

Steps to reproduce:

$ mkdir xxx
$ cd xxx
$ apm init
Creating new project definition file
Application Identifier [com.my.app]:
Application Name [My Application]:
Application Version [1.0.0]:
$ mkdir src
$ touch src/MyApplication-app.xml
$ apm generate app-descriptor

MyApplication-app.xml is still empty.

dx tool failed:no main manifest attribute

NOTE: the error went away after I made the below change and regenerated the application manifest

    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="30" />

(used to be minSdkVersion="21")


I get this error when packaging an APK.

dx tool failed:no main manifest attribute, in /Users/jeko/Library/Android/sdk/build-tools/30.0.3/lib/d8.jar

Note that packaging an AAB works.

My guess is that "no main manifest attribute" means there's something wrong with the generated AndroidManifest.xml. I'm investigating.

--

logs (-arch armv8):

bin/AIRSDK_33.1.1.633/bin/adt -licenseFile adt.lic -package -target apk-debug -arch armv8 -storetype pkcs12 -keystore /path/platforms/mobile/android/fovea-devel.p12 -storepass password bin/android-debug/MyApp.apk bin/android-debug/MyApp-app.xml -C bin/android-debug MyApp.swf icons google-services.json -extdir bin/apm-mobile/libs -extdir bin/apm-mobile/ane -platformsdk /Users/jeko/Library/Android/sdk

dx tool failed:no main manifest attribute, in /Users/jeko/Library/Android/sdk/build-tools/30.0.3/lib/d8.jar

specifying -arch armv7 the error is different:

dx tool failed:Error: D8 does not support main-dex inputs and outputs when compiling to API level 21 and above

"apm update" incorrectly uninstalling packages

Hi, I just noticed that my install ane com.distriqt.CameraRollExtended got automatically removed when I called apm update. It just happened when the latest release. There was no issues with the previous version.
Here's a part of the output:

mingjing@Mings-MBP Bf % apm update apm
apm: v1.1.1
✓ Found new release: 1.1.2
✓ Install complete
mingjing@Mings-MBP Bf % apm update
✓ Found package: [email protected]
✓ Found package: [email protected]
✓ Found package: [email protected]
✓ Found package: [email protected]
✓ Found package: [email protected]
Uninstall package : com.distriqt.CameraRollExtended
✓ Removed package : com.distriqt.CameraRollExtended
Uninstall package : com.distriqt.square.picasso
✓ Removed package : com.distriqt.square.picasso
Uninstall package : com.distriqt.square.okhttp3
✓ Removed package : com.distriqt.square.okhttp3
Uninstall package : com.distriqt.Core
com.distriqt.Core :: Required by another package - skipping uninstall
Uninstall package : androidx.exifinterface
✓ Removed package : androidx.exifinterface
Uninstall package : androidx.appcompat
androidx.appcompat :: Required by another package - skipping uninstall
Uninstall package : androidx.core
androidx.core :: Required by another package - skipping uninstall
✓ Found package: [email protected]
✓ Found package: [email protected]

`apm airsdk *` fails

The airsdk commands fail. The root of the issue is in Harman's /releases API [1].

A note about this, I guess it would be nice if the apm-repository had an API endpoint that proxies those requests to Harman:

  1. If the API URL changes, it can be fixed for everyone by changing the apm server configuration (no need to deploy a new version of the client).
  2. If the format of the response changes, it could be fixed server-side too.
  3. It could also do some caching and contain an hard coded fallback response:
    • so that in case the upstream API is unreachable (like it is now) or provides an incorrect response, apm airsdk would still work.

[1]

$ curl https://dcdu3ujoji.execute-api.us-east-1.amazonaws.com/production/releases | jq .
{
  "errorType": "TypeError",
  "errorMessage": "Cannot read property 'origin' of undefined",
  "trace": [
    "TypeError: Cannot read property 'origin' of undefined",
    "    at Runtime.exports.handler (/var/task/index.js:220:31)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
  ]
}

cannot add addtional values to the array for the key CFBundleURLSchemes

Hi, I would like to add additional string values for the key CFBundleURLSchemes in the infoAddtions section. I added my additional strings in the InfoAdditions.xml and then generated the description file which looks like this:

<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>this_is_the_one_I_inserted</string>
    </array>
  </dict>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fbxxxxxxxxxxxxxxxx</string>
    </array>
  </dict>
</array>

Is it correct or these 2 strings should be combined into the same array? Thanks!
p.s. the FB part is auto generated as I'm using the FB ane.

stuck on the phase "extracting airpackage"

Hello, I just followed the tutorial and tried to download the IDFA extension, but the progress stopped on extracting airpackage. (It's been over 30 minutes). Do I miss anything to unzip it? Below is the log:
E::LoadUserSettingsProcess::File doesn't exist ⣾ Finding package : com.distriqt.IDFA@latest ✓ Found package: [email protected] ⣽ Finding package : [email protected] ✓ Found package: [email protected] ⣻ Finding package : [email protected] ✓ Found package: [email protected] ⢿ Finding package : [email protected] ✓ Found package: [email protected] ⡿ Finding package : [email protected] ✓ Found package: [email protected] Installing package : [email protected] Downloading package : [email protected] 5% Downloading package : [email protected] 16% Downloading package : [email protected] 21% Downloading package : [email protected] 32% Downloading package : [email protected] 37% Downloading package : [email protected] 43% Downloading package : [email protected] 48% Downloading package : [email protected] 54% Downloading package : [email protected] 59% Downloading package : [email protected] 65% Downloading package : [email protected] 75% Downloading package : [email protected] 81% Downloading package : [email protected] 86% Downloading package : [email protected] 100% Downloading package : [email protected] ✓ downloaded ⣟ extracting F:\TestAPMProj\apm_packages\com.distriqt.playservices.AdsIdentifier\com.distrqt.playservices.AdsIdentifier_17.0.0.airpackage

p.s. This is the second time that I run the install command. The first time it threw me the error log saying checksum does not match. Here's the log
100% Downloading package : [email protected] ✗ Downloaded file failed checks - retry install again later! checksum does not match ERROR :: Failed to install package : [email protected] install :: Downloaded file failed checks: checksum does not match

apm stopped working. Package Updates Available (0)

Hello, the apm suddently stopped working. When I try to run apm update, it outputs Package Updates Available (0) (empty)
Running apm update apm outputs the same thing.
p.s. apm -v not only prints apm's version, but also npm,node,python etc.

How to run from source?

How to run from source?

Short answer

  1. Run ant bootstrap
  2. Run ant build
  3. Use apm located into client/out

Trying to run the tools from the git repo, it doesn't detect my project configuration file:

# cloned repository, can't run
$ ~/github/apm/client/src/apm help
initial content not found

# installed from releases, it will run
$ ~/tools/apm/apm help
apm <command>
...

How to re edit Package Name in XML with APM

Hey guys so it's a simple question I can't seem to find the cmd line to edit my descriptor file package name I thought i filled out the information correctly however It is adding double the 'air' name in the package xml as shown:

<provider android:name="androidx.startup.InitializationProvider" android:authorities="air.air.StackCats.androidx-startup" android:exported="false">

So I have to go through the xml and delete the extra 'air' on the lines that contain the package name.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.